私の主な問題は、構造体Itemから印刷すると、s.nameが2回印刷されることです。Printfは同じ配列を2回出力する
コード:
#include <stdio.h>
struct Item{
char code[5];
char name[40];
};
int main(){
FILE *f;
struct Item s;
//Open file
f = fopen("ex.txt", "r");
//Read from file
fscanf(f, "%5c;%[a-zA-Z ]\n", s.code, s.name);
//Print from file
printf("%s %s", s.code, s.name); //Main problem here
fclose(f);
}
入力(ex.txt):
AB011;Hello World
出力は次のようになります。
AB011 Hello World
しかし、その代わりに、それはです:
AB011Hello World Hello World
ここでは何が起こっていますか?
その他の備考:この動作にはfscanfを使用する必要があります。あなたは書式指定子として
"%5c;%[a-zA-Z ]\n"
を使用しているfscanf
への呼び出しで
gst_fileは何で
\0
自分を追加しているのですか?あなたが開いたファイルから読むべきではありませんか? –'%s':引数にはヌルターミネータが必要です。 – BLUEPIXY
@JewelThiefええ、それについて申し訳ありません。ちょうどそれを修正した。 – Steve