아래와 같은 문제로 꼬박 하루를 고생했네요.
fp = fopen(filename, "r");
fgets(line, 1024, fp);
// 여기서 line의 줄바꿈 문자 '\n' 제거 --> '\n' 위치에 '\0'을 셋팅
strcpy(arr, line);
strcat(arr, "abcdef");
puts(arr); // line값에 무관하게 "abcdef"가 출력됨
<<에러 원인 발견>>
Linux 64 비트 OS에서는 "r" 옵션이 "rb"와 동일하게 작동하여 에러가 발생함.
즉, line에 어떤 스트링이 있더라도 출력결과는 동일함.
하지만, 실제로 arr에 들어 있는 값은 아래와 같음.
arr의 내용 -- "This is a string......\rabcdef"
arr이 출력될 때는 CR 문자('\r')로 인하여 라인 첫줄부터 abcdef가 출력됨.
64비트 리눅스에서 텍스트 파일 읽어 들일 때 주의가 필요합니다.
첫댓글 제가 난독증인가요..문제가 뭐고 해결방법이 뭔가요..?