C 从文件中读取字符串

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

在我的文件中,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);

}
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);
   }