C 从文件中读取字符串
在我的文件中,4行中有4个名称,但输出仅显示第一个和第三个名称。怎么了?我知道这是非常基本的,但这占用了我很多时间。您(f)进入C 从文件中读取字符串,c,string,io,C,String,Io,在我的文件中,4行中有4个名称,但输出仅显示第一个和第三个名称。怎么了?我知道这是非常基本的,但这占用了我很多时间。您(f)进入语句,而语句和在循环块中,因此,您正在推进文件位置,而没有利用内部调用中读取的内容。试试这个: FILE *fp; char name[50]; fp=fopen("stu.txt","r"); while(fgets(name,50,fp)!=NULL) { printf(" %s",name); fgets(name,50,fp); } fcl
语句,而语句和在循环块中,因此,您正在推进文件位置,而没有利用内部调用中读取的内容。试试这个:
FILE *fp;
char name[50];
fp=fopen("stu.txt","r");
while(fgets(name,50,fp)!=NULL)
{
printf(" %s",name);
fgets(name,50,fp);
}
fclose(fp);
将fgets
从循环体上拆下。while
表达式中的fgets
已经起作用了。\include
while(fgets(name,50,fp)!=NULL)
{
printf(" %s",name);
}
int main()
{
文件*fp;
INTC;
fp=fopen(“file.txt”,“r”);
而(1)
{
c=fgetc(fp);
if(feof(fp))
{
打破
}
printf(“%c”,c);
}
fclose(fp);
返回(0);
}
移除第二个FGET(名称,50,fp)
while
循环条件没有指定任何条件,只要循环发生在循环体内部,该条件就会导致循环终止——它是一个表达式,在每次(潜在)循环传递之前实际计算,以决定是否执行循环体(如果结果为非零,则会发生)。将fgets()
放入循环条件将在每次循环通过前检查条件时调用它。。。循环体中的fgets()
独立于它(只有当条件中的fgets()
调用返回NULL
时,循环才会结束,但当循环体中的调用返回NULL
时,循环才会结束)。OP的代码是基于行的。你的是基于字符的;int main(int ARC,char *ARGV[]){QCOEApEpple A(ARCC,ARGV);字符串SLINE =“”;IFFINSTINFILE;INFIL.OPENT(“Tim.tFt”);同时((INFILE。EFF)){GETLINE(INFILE,SLINE);COOP OP的代码是C(和问题标记为这样)。注释中的代码是C++。
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
{
c = fgetc(fp);
if( feof(fp) )
{
break;
}
printf("%c", c);
}
fclose(fp);
return(0);
}