我想从一个文件中读取新字符串中的每个字符串的字符串,但我认为它读取一次换行符而不是一个字符串,我不知道为什么。如果我要以错误的方式阅读字符串,请纠正我。使用fgets从文件中读取字符串C
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
正如你所看到的第一个结构被读取后有一个空白(换行? )然后一切都转移了。我想我可以读一个虚拟字符串来吸收额外的空白,然后什么也不会移动,但是这并不能帮助我理解这个问题,并在将来避免。
编辑1:我知道它停在一个换行符但仍然读取它。我想知道为什么它不会在第三个字符串期间读取它,并将其传输到第四个字符串,而不是将第四个字符串作为源的第四行,但它只发生一次。 该文件的方式
peter
pupkin
223456iatb
masha
gubkina
234567iasb
sasha
dudkina
123456iasb
哇,谢谢你的第二部分,它摆脱了我的第二个问题:一个空的额外的结构。很难找到一个循环来从文件中获取字符串的例子(或者我可能看起来不正确,尽管我一直在尝试很长时间)。 – Ivan 2010-03-28 03:06:22