C 프로그램에서 읽을 수있는 고정 된 형식의 텍스트 파일이 있습니다. 텍스트 파일의 포맷은 아래와 같다 :C에서 fscanf를 사용하여 파일 읽기
w 400341a0
r dfcfa8
w 7b034dd4
첫 글자가 항상 w 또는 R이며, 두 번째 요소는 32 비트의 16 진수된다.
내가 라인으로이 파일 라인을 읽기 위해 다음과 같이 코드를 작성했습니다 :
int main (int argc, char *argv[])
{
FILE* file_ptr;
char rw;
uint32_t address;
int file_read;
uint32_t file_line_ctr = 1;
#if(MODE == DEBUG)
{
printf("DEBUG_MODE\n ");
}
#else
{
/*Do Nothing*/
}
#endif
file_ptr = fopen(argv[10], "r");
if (file_ptr == NULL)
{
printf("Can't Open File\n");
}
else
{
printf("File Opened Successfully\n");
}
file_read = fscanf(file_ptr, "%c %x" , &rw, &address);
printf("%c %x \n", rw, address);
while (file_read!= EOF)
{
file_read = fscanf(file_ptr, "%c %x" , &rw, &address);
file_line_ctr ++;
printf("%c %x \n", rw, address);
}
fclose(file_ptr);
printf("File Length = %d \n", file_line_ctr);
return 1;
}
를 내가받을 100000 개 항목이 파일에 대한 아래의 형식으로 출력 :
w 400341a0
400341a0
r dfcfa8
dfcfa8
w 7b034dd4
7b034dd4
File Length = 200000
분명, 나는 두 번 인쇄 할뿐만 아니라 몇 가지 이유로 항목을 두 번 읽습니다. 왜 누군가가 그렇게 생각할 수 있습니까?