读取字符0x1A时发生文件结束

我正在尝试读取一个大约1000个字符的文件。 遇到0x1A字符时,文件读取终止。 我要那个:

  1. 0x1A不应该终止读数。

  2. 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返回。