2017-02-10 13 views
2

나는 C-Programming의 멍청한 놈이다. 그래서 나를 괴롭혔다. 아래에서 볼 수 있듯이 C.C에서 파일을 읽는 중 줄의 끝을 무시하는 방법?

에 문자 파일에 문자를 읽는 동안 나는이 문제에 직면하고있어

, 분명히, 내 파일 400 개 문자가하지만 난 문자로 그들에게 문자를 읽으려고 할 때이 소요될 419 색인. 나는 그들이 줄의 끝 문자를 포함하고 있다고 생각한다. 나는 그들을 무시하는 방법을 모른다. 볼 수 있듯이 continue을 사용해 보았지만 무시할 수 없습니다. 여기

여기
00000000000000000000 
00000000000000000000 
00000000000000000000 
00555555555555555500 
00000000000000000300 
00000000000000000300 
00000000000000000300 
00000000000000000300 
00000000000000000300 
00000000000000000300 
00444444444444444300 
00400000000000000000 
00400000000000000000 
00400000000000000000 
00400000000000000000 
00400000000000000000 
00777777777777777700 
00000000000000000000 
00000000000000000000 
00000000000000000000 

내 코드 내 파일 데이터입니다 :

FILE *pToFile = fopen("toConvert.txt", "r"); 

char single; 
i = end_color; 
while ((single = fgetc(pToFile)) != EOF) { 

    if (single != '\0') { 
     continue; 
    } else { 
     if (single !='0') { 
      bitmap[i] = 0x66; 
     } else { 
      bitmap[i] = 0xff; 
     } 
     i++; 
    } 
} 

참고 : 나는시 문자 비트 맵에서 "회색 (0x66)"색상을 추가하기 위해 노력하고있어 문자가 0이 아닌 경우 "white 0xff"입니다. 즉, 0과 다른 문자를 구별해야합니다. 줄 끝 문자로 인해 어렵고 혼란 스럽습니다.

+3

기타 :'int fgetc (FILE * stream);'은'char' 유형을 반환하지 않습니다. 따라서'char single;'을'int single;'로 변경하면'EOF' 상태와 데이터를 구별 할 수 있습니다. 초보자 오류가 자주 발생하면 항상 맨 페이지를 읽으십시오. –

+4

읽기 직후에'if (single == '\ n') continue;' –

+1

또 다른 스타일은 이전 테스트에서 다른 곳으로 이동할 때'else {'가 필요하지 않습니다. –

답변

0

파일의 개행 문자는 '\ n'이고 '\ 0'은 배열의 null 문자를 나타냅니다. 그래서 후자를 전자로 바꾸고 '! ='를 '=='로 바꾸어 개행 문자의 읽기를 건너 뜁니다.

FILE *pToFile = fopen("toConvert.txt","r"); 
// single as int (thanks to Weather Vane comment) 
int single; 
int i = end_color; 
while((single = fgetc(pToFile)) != EOF){ 

    if(single == '\n'){ 
     continue; 
    }else{ 
     if(single !='0'){ 
      bitmap[i] = 0x66; 
     } 
     else{ 
      bitmap[i] = 0xff; 
     } 
     i++; 
    } 
} 
+1

테스트를 거꾸로 할 수도 있습니다. 그래서'if (single == '\ n') {계속; }'? –

+0

네, 감사합니다! –

+1

또한'char single;'버그를 고쳤습니다. 이 문제를 문서화하면 미래에 OP가 그것을 피하는 데 도움이됩니다. – chqrlie