读取字符0x1A时发生文件结束
我正在尝试读取一个大约1000个字符的文件。 遇到0x1A
字符时,文件读取终止。 我要那个:
-
0x1A
不应该终止读数。 -
0x1A
应该像普通字符一样存储。
我可以使用另一种方法来读取文件吗?
int main(void) { int x=0,ch = ' ', file_name[25], arr[1000]; FILE *fp; printf("Enter the name of file you wish to see\n"); gets(file_name); fp = fopen(file_name, "r"); // read mode if (fp == NULL) { perror("Error while opening the file.\n"); exit(EXIT_FAILURE); } printf("The contents of %s file are :\n", file_name); getchar(); int y= 0; while ((ch = fgetc(fp)) != EOF) { printf("%d) %x \n",y, ch); arr[y++] = ch; printf(" %x \n", arr[(y- 1)]); } printf("Press to see the data off array..."); getchar(); for (int x = 0; x < y; x++) { printf("%d ", (x + 1)); printf(". %x \n", arr[x]); } getchar(); fclose(fp); return(0); }
你打开文件作为txt模式,
fp = fopen(file_name, "r"); // txt mode
请尝试二进制模式读取0x1A
,如
fp = fopen(file_name, "rb"); // binary mode
而不是fgetc()
你可以使用fgets
。
while ((ch = fgetc(fp)) != EOF) { printf("%d) %x \n",y, ch); payload[y++] = ch; printf(" %x \n", arr[(y- 1)]); }
你可以简单地用fgets()
写这个 –
#define MAX 1024 //open file in "r" mode char arr[MAX]; while(fgets(arr,MAX,fp)) { printf("%s",arr); }
您文件中的内容存储在数组arr
。 在使用fgets
您不必担心EOF
因为fgets
会在遇到EOF
返回。