【发布时间】:2010-03-28 01:56:04
【问题描述】:
我正在尝试从一个文件中读取字符串,该文件的每个字符串都在一个新行上,但我认为它读取一个换行符而不是一个字符串,我不知道为什么。如果我要以错误的方式读取字符串,请纠正我。
i=0;
F1 = fopen("alg.txt", "r");
F2 = fopen("tul.txt", "w");
if(!feof(F1)) {
do{ //start scanning file
fgets(inimene[i].Enimi, 20, F1);
fgets(inimene[i].Pnimi, 20, F1);
fgets(inimene[i].Kood, 12, F1);
printf("i=%d\nEnimi=%s\nPnimi=%s\nKaad=%s",i,inimene[i].Enimi,inimene[i].Pnimi,inimene[i].Kood);
i++;}
while(!feof(F1));};
/*finish getting structs*/
printf 可以让我看到读入了什么,这是结果
i=0
Enimi=peter
Pnimi=pupkin
Kood=223456iatb i=1
Enimi=
Pnimi=masha
Kaad=gubkina
i=2
Enimi=234567iasb
Pnimi=sasha
Kood=dudkina
正如您在读取第一个结构后看到的那样,有一个空白(换行符?)onct,然后一切都被转移了。我想我可以读取一个虚拟字符串来吸收多余的空白,然后什么都不会改变,但这无助于我理解问题并在将来避免。
编辑 1:我知道它在换行符处停止,但仍会读取它。我想知道为什么它在第三个字符串期间不读取它并转移到第四个字符串而不是给第四个字符串提供源的第四行但它只发生一次。 顺便说一下文件格式是这样的
peter
pupkin
223456iatb
masha
gubkina
234567iasb
sasha
dudkina
123456iasb
【问题讨论】: