这里是我的代码:fscanf()函数把输入
FILE* fp,*check;
fp=fopen("file.txt","r");
check=fp;
char polyStr[10];
while(fgetc(check)!='\n')
{
fscanf(fp,"%s",polyStr);
puts(polyStr);
check=fp;
}
while(fgetc(check)!=EOF)
{
fscanf(fp,"%s",polyStr);
puts(polyStr);
check=fp;
}
现在,如果我file.txt
是:
3,3, 4,4, 5,5
4,1, 5,5, 12,2
现在输出的是:
,3,
4,4,
5,5,
,1,
5,5,
12,2,
现在为什么是第一个字符两条线都没有被读取?
如何防止呢?这是我用过的卡,而不是唯一的原因fp。如果检查增加,为什么fp也会增加? – Kraken
好的,我可以使用fseek ..但为什么fp会在我做fgetc(检查)时发生变化? – Kraken
'check'和'fp'是两个不同的指向*相同*'FILE'对象的指针。要获得两个独立的'FILE'对象,你必须调用'fopen'两次。但不要那样做,也不要使用'fseek'。用'fgets'读完整行。 – zwol