2012-11-21 8 views
0

처음에는 리눅스와 같은 것들로 매우 초보적인 자세를하고 싶습니다.리눅스의 줄 끝에 이상한 문자가 있습니다. getline으로 라인을 읽으십시오.

GetLine을 사용하여 한 줄씩 파일을 읽습니다.

처음에는 함수가 열려있는 파일 설명자를 엽니 다.

그런 다음 (int) f_descriptor를 (FILE *) f_stream으로 변경합니다 (GetLine에 FILE * arg가 필요하기 때문에).

전체 줄을 단어로 분리하고 있습니다 (공백은 구분 기호입니다). 그리고 그것을 char ** words_array에 넣습니다. 선의 마지막 단어가 아닌 한 모든 것이 좋습니다. 웬일인지, 마지막 단어는 그들의 끝에 약간의 이상한 문자를 가지고있다. 그것은 항상 일어나지 않습니다.

enter image description here

왜 이런 일이 일어날 수 있을까?

답변

1

사물의 외양에 따르면, 나는 네가 마지막 문자열을 널로 끝내지 않는다고 생각한다. 보고되는 길이는 정확하지만 여분의 바이트가 있다는 사실은 처음에는 null 바이트가 아닌 일부를 메모리 영역에 복사한다는 의미 일 수 있지만 명시적인 null 바이트 더 나은 답변을 원할 경우 데이터를 읽는 곳의 일부 코드를 게시 할 수 있다면 도움이 될 것입니다.

+0

나는 그 문제가 마지막 문자열에 \ 0이 없기 때문에 문제가 발생했다는 것을 알았지 만 당신의 대답은 괜찮습니다. 감사 :) – Patryk

0

(int) f_descriptor(FILE*) f_stream으로 간단히 변경할 수 없습니다. 그들은 매우 다른 두 가지입니다. 당신이 f_descriptor를 얻을 수 open()를 사용하는 경우, 파일에 액세스 할 수 read()write()를 사용해야하지만 f_stream를 얻을 수 fopen()를 사용하는 경우, 당신은 fgetch(), fread(), fwrite(), gets(), puts(), fprintf(), fscanf() 등 사용

관련 문제