CodeBlocks、GCC、および C 言語を使用して書いています。私が持っているコードは次のとおりです。
char word[50];
FILE *fn;
fn = open("word.txt", "rb");
if(fn == NULL) perror("File not opened");
while(!feof(fn))
{
fscanf(fn, "%s", word);
}
テキスト ファイルには 1 つの単語しか含まれていません (現時点では、"batman" です)。以下を含むこのコードのさまざまなバージョンを試しました。
char* word;
char = malloc(50);
FILE *fn;
fn = open("word.txt", "rb");
if(fn == NULL) perror("File not opened");
while(!feof(fn))
{
fscanf(fn, "%s", &word);
}
正直なところ、理由はわかりませんが (なぜこれが非常に難しいのか)、CodeBlocks が私に与えているエラーは、feof 行での恐ろしい SIGSEV セグメンテーション違反です。while ループを実行しなかった場合、fscanf はセグメンテーション エラーをスローします。助けてください!私は C で作業することはあまりありませんが、その理由を今思い出しました。最も単純なことでさえ、非常に難しい場合があります。前もって感謝します。
更新:オープンラインを次のように変更することで、実際にこれを機能させました(一番上のもの)。
fn = fopen("C://Temp//word.txt", "rb");
これは相対パスでどのように機能しますか?