私は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で印刷することはできません。 1つは、nullで終了しない可能性があります。 –
'cad'を使う前に' fgets'の戻り値を確認してください。 – Mat
バイナリモードで追加するファイルを開いていて、そこからファイルを読み取ろうとしています。 – dasblinkenlight