2014-03-13 2 views
0

사용자 입력에서 파일 이름을 읽으려는 중, 지정한 파일을 열려고합니다. 내가 얻는 문제는 입력의 끝 부분에 정크 문자가 추가 된 것 같다. (userInput 변수를 printf() 할 때 이것을 발견했습니다.)읽기 시스템 호출 정크 문자

if(read(0, userInput, 128) < 0) 
    write(2, "An error occurred in the read.\n", 31); 

어떤 문제가 있습니까? 내가 바로 codewiki에서 감사

답변

0

당신은 명확한 대답을 게시하기에 충분한 정보를 게시하지 않은를이 코드를 얻었으나, 여기 내 추측이다 :

C 문자열이 널 (null) 종료됩니다. 부분 문자열 만 읽었지만 종료하지 않고 C 문자열로 인쇄하려고하면 정의되지 않은 동작이 발생합니다. 실제로는 그 다음에 가비지가 표시됩니다.

+0

좋아요, 그렇다면 사용자로부터 읽은 후 수동으로 Null 문자를 추가해야한다는 의미입니까? 또한 strcat (userInput, "\ 0") 시도했지만 여전히 정크 – user3299369

+0

점점 위의 코드 printf ("CHECK1 % s CHECK2", userInput); printf ("SECOND % s PART", userInput); 제대로 읽었는지 확인해야하지만 문자열이 인쇄 된 후에 이상한 기호를 얻게됩니다 (printf 문의 % s 이후). – user3299369

+0

'strcat'은 C 문자열에서만 작동합니다. catch-22 (BTW는 아무 작업도하지 않습니다). 'input [pos] = 0' –