2014-04-08 4 views
0

gets() 함수를 사용하여 입력을 말하고 있습니다. 그래서, 문자열이 끝나는 곳을 확인하고 싶습니다. 그러나 NULLscanf()을 사용하여 삽입 될 때 문자열 끝에 삽입되지 않습니다. 그러면 어떻게해야합니까?문자열의 끝에 NULL을 삽입하는 방법

+4

그것은'끝에 NULL'하지만, ''아니다 \ 0''. – AntonH

+2

그리고'\ 0'의 이름은 NUL입니다. 그건 그렇고'gets()'는 너무 위험하므로'fgets()'로 바꿔야합니다. –

+2

gets() 자체가 null 문자를 삽입합니다. – Himanshu

답변

8

gets() 절대 터미네이터를 삽입하지 않습니다. 그러나 gets()은 더 이상 사용되지 않으므로 사용해서는 안됩니다. 버퍼 오버런 취약점을 피할 수 있으므로 fgets()을 대신 사용하십시오.

표준 입력에 fgets을 사용하려면

char buffer[256] 
fgets(buffer, sizeof(buffer), stdin); 
+0

null 종결자는 "\ 0"널 문자를 의미합니까? –

+2

@ Mr.32 : '\ 0'은 ASCII NUL 종결 자이고 모든 \ C 문자열에 자동으로 추가되는 NUL이 포함 된 문자열은 \ 0입니다. –

+0

하지만 파일을 사용하고 있지 않습니다. 나는 배열을 정의하고 gets() 함수를 사용하여 입력을 받았다. fgets()는 파일에 사용된다. – user3493439

관련 문제