我是C编程的新手。我试图打开一个文件(juanjo2.klb),它是我用同一个程序创建的一个二进制文件,我将在此处显示。问题是我试图使用fprintf()函数将字符串打印到文件中,然后使用fgets()将字符串写入'cad'字符串,然后使用函数printf()打印到屏幕上我从文件读取的字符串。fgets()崩溃我的程序
当我运行该程序时,程序崩溃,Windows(Windows 7)给我一个消息框,说我的程序停止工作,它正在为此问题寻找解决方案。所以我真的不知道我在做什么错误,因为我认为我正确地使用了这些功能。我需要你的帮助。这里是源代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAXCHARS 20
int main()
{
char cad[MAXCHARS];
FILE *pf;
char *nombre = "\\juanjo2.klb";
if(pf = fopen(nombre, "a+b") == NULL)
{
printf("Error opening file\n");
exit(-1);
}
fprintf(pf, "%s", "Hola como estas");
while(feof(pf) == 0)
{
fgets(cad, 13, pf);
printf("%s", cad);//Here I print the string to the screen.
}
fclose(pf); //Closing file.
system("PAUSE");
return 0;
}
我使用的代码块IDE 10.05。谢谢你的帮助。
无法使用%s打印二进制数据。一方面,它可能不会被终止。 –
在使用'cad'之前检查'fgets'的返回值。 – Mat
您正在打开用于以二进制模式附加的文件,然后尝试从中读取文件。 – dasblinkenlight