C에서 fgets로 일반 텍스트 파일을 읽으려고하면 첫 번째 줄에 이상한 출력이 표시됩니다. 그래서 첫 번째 라인이 "안녕하세요"로되어 있다면 "ELFh` 20120918 (prerelease) @xxhello"와 같은 것으로 나오게됩니다. 여기에 코드입니다 :fgets를 사용하여 텍스트 파일을 읽을 때 이상한 기호
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
FILE *fr;
int i;
extern int uniq(char *previous_word, char *current_word);
char *line1 = malloc(500);
char *line2 = malloc(500);
char *temp;
for(i = 0; i<argc; i++)
{
fr = fopen (argv[i], "r");
while(fgets(line2, 499, fr) != NULL)
{
uniq(line1, line2);
temp = line1;
line1 = line2;
line2 = temp;
}
fclose(fr);
}
return 0;
}
int uniq(char *previous_word, char *current_word) {
if(!(current_word))
return 1;
if(strcmp(previous_word, current_word))
printf("%s", current_word);
return 0;
}
내가이 구글에 대한 문제와 스택 오버 플로우의 줄 수있는 모든 설명을 검색 한 나는 그것을 수정하는 모든에서 아무것도 찾을 수 있습니다.
ELF는 Linux 실행 파일을 읽고있는 것처럼 보입니다. – rekire
'argv [0]'은 여러분이 생각한대로 응용 프로그램에 전달 된 첫 번째 인수가 아니라 실행 가능한 응용 프로그램 이름입니다. 이 스레드를 확인하십시오 : http://stackoverflow.com/questions/2020945/argc-and-argv-in-main – Jack