用C语言读出文件行数

兄弟姐妹帮我讲解下,用C语言读出文件行数?

编写一个函数,计算输入的行数。(提示:不能使用get()函数输入这些行,因为get()函数接收第一个换行字符时就结束输入。)
最新回答
钢铁不是铁

2024-05-03 00:33:19

#include <stdio.h>

int hangshu(char file[])//输入工程目录下的文件名,或者其他目录下绝对路径名例如:c:\\1.txt;

{

 char c;

 int h=0;

 FILE *fp;

 fp=fopen(file,"r");

 if(fp==NULL)

  return -1;//表示文件打开错误

 while((c=fgetc(fp))!=EOF)

 {

  if(c=='\n')

   h++;

  else

  {

   c=fgetc(fp);//这是处理最后一行可能没有换行标志,但是确文件结束。

   if(c==EOF)

   {

    h++;

    break;

   }

  }

 }

 return h;

}

int main()

{

    int hs=hangshu("c:\\1.txt");//这里说明你要打开的文件。这个是c盘根目录下文件

 int hst=hangshu("1.txt");//工程目录下的文件。

 printf("行数:%d\n",hs);

 printf("行数:%d\n",hs);

}

如上是用c编写的,不是c++.

运行的时候可以把中文注释去掉。

完全可以运行的,我已经测试过了。

夏櫻之雨

2024-05-03 00:35:20

  1. 想得到文件行数,只需要一行一行读取并累计,直到文件末尾。就可以获取文件行数了。


  2. #include <stdio.h>

    int main()
    {
        FILE *pf = fopen("C:/Users/xin/Desktop/12.txt", "r"); // 打开文件
        char buf[1000];
        int lineCnt = 0;
        if (!pf) // 判断是否打开成功
            return -1;
        while (fgets(buf, 1000, pf)) // fgets循环读取,直到文件最后,才会返回NULL
            lineCnt++; // 累计行数
        fclose(pf);
        printf("file line count = %d\n", lineCnt);
        return 0;
    }
忧伤画在眼角

2024-05-03 02:35:23

  要获得一个文本文件的行数:

  1、用fopen函数打开文件。

  2、循环读取文件中的每一个字符,判断字符是否为换行符,如果是增加计数。

  3、最后输出计数即可。

  在c语言中换行符用转义字符‘\n’表示。示例代码如下:

#include<stdio.h>
#include <string.h>
void main()
{
FILE *fp;
char name[100];
int i,c;
i=0;  
printf("enter filename:");
gets(name);
fp=fopen( name ,"r"); 
if (fp!=NULL)
while ((c=fgetc(fp))!=EOF)

if(c=='\n')
i++;
}
fclose(fp);
printf("number of numbers:%d\n",i); 
}

  

青山一叙

2024-05-03 02:20:17

//Solution 1.Read Until The End Of File

#include<iostream>
using namespace std;
int GetLineCnt()
{
int ret = 0;
char _buf;
while(true)
{
while((_buf = getchar())!='\n'&&_buf>0);
++ret;
if(_buf<0)return ret;
}
}
int main()
{
//freopen("D:\\a.txt","r",stdin);
printf("%d\n",GetLineCnt());
return 0;
}

//Solution 2. Read Until The End Of File

#include<iostream>
using namespace std;
char str[1005];
int GetLineCnt()
{
int ret(0);
while(gets(str)!=NULL)++ret;
return ret;
}
int main()
{
//freopen("D:\\a.txt","r",stdin);
printf("%d\n",GetLineCnt());
return 0;
}

//Solutio 3.

#include<iostream>
using namespace std;
char str[1005];
char *bad="END";//输入END表示计算结束,可以自己修改
int GetLineCnt()
{
int ret(0);
while(gets(str),strcmp(bad,str))++ret;
return ret;
}
int main()
{
//freopen("D:\\a.txt","r",stdin);
printf("%d\n",GetLineCnt());
return 0;
}