-20
テキストファイルの内容を読み取る簡単なプログラムを作成し、cl.exe(Visual Studioコンパイラ)でコンパイルしました。プログラムはコンパイルし、私はそれを実行すると、それが正常に起動し、それはそれは残酷にクラッシュし、データの読み取りや印刷を過ぎて行く瞬間...ここでは、コードです:fscanfを使用してファイルからデータを読み込んだ後にプログラムがクラッシュする
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <fstream>
#include <string>
int main (int argc, char *argv[])
{
char filename[256];
char d1[9];
char d2[8];
if (argc > 1) //lecture de l'argument
strcpy(filename, argv[1]);
else {
printf("Usage: read_file");
return 0;
}
FILE *f = fopen(filename, "r");
if (f == NULL) {
printf("Cannot find file \'%s\'\n", filename);
return 0;
}
printf("file opened\n");
rewind(f);
fscanf(f, "%s %s", d1, d2);
printf("%s %s",d1,d2);
fclose(f);
return 1;
}
私はgccで、それをそれをコンパイルしかし、うまく動作します。事は...私はVisual Studioのコンパイラで実行するために、これを必要とする、すべての
ファイルの内容は何ですか?あなたが読んだ文字列がそれぞれ*** 8 ***と*** 7 ***文字よりも長い場合はどうなると思いますか? (上記のサイズは、配列内の文字列ターミネータのスペースを残すことに注意してください) –
少しアドバイス:**決して**コンパイラを責めません。私は自分のエラーは数え切れないほどですが、私の生涯ではおそらく5つの実際のコンパイラのバグを発見しました。 –
バグはVisual Studioではなくコード内にあります。あなたの 'fscanf'呼び出しは、任意の長さの文字列を考慮しません。あなたがコントロールできないものは使用しないでください。 [tag:c]タグとCコードを削除してください。 – IInspectable