用C语言读出文件行数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言读出文件行数相关的知识,希望对你有一定的参考价值。

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

#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++.

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

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

参考技术A

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


    #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;

参考技术B

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

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

  

参考技术C //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;

c++文件怎么从文件中读出和写入字符串?

其实我是想问

谁能告诉我怎么编写这个程序:

从文件“file1.txt”中读出一串包含若干数字和英文字母的字符串,将其中的数字字符挑选出来,
并将他们按由小到大的顺序存入文本文件“filenum.txt”中

急求啊,答的快又好的有100分的加分!!!!
说详细点好吗````

一般来说在C++语言中读取txt文件的信息有三种方法:

1、使用C语言标准文件I/O中的fopen()、fread()等等函数。示例如下(vc6.0下编译通过):

#include<stdio.h>
FILE*stream;
void main(void)

long l;
float fp;
char s[81];
char c;
 
stream=fopen("fscanf.out","w+");
if(stream==NULL)
printf("Thefilefscanf.outwasnotopened\\n");
else

fprintf(stream,"%s%ld%f%c","hello world",  
65000,3.14159,\'x\');
/*Setpointertobeginningoffile:*/
fseek(stream,0L,SEEK_SET);
/*Readdatabackfromfile:*/
fscanf(stream,"%s",s);
fscanf(stream,"%ld",&l);
fscanf(stream,"%f",&fp);
fscanf(stream,"%c",&c);
/*Outputdataread:*/
printf("%s\\n",s);
printf("%ld\\n",l);
printf("%f\\n",fp);
printf("%c\\n",c);
fclose(stream);

2、使用C++语言中的文件I/O中的ofstream,ifstream,fstream。示例如下(vc6.0下编译通过):

    #include <iostream>
    #include <fstream>
    #include <cstdlib>
      using namespace std;
    
    int main () 
        char buffer[256];
        ifstream in("test.txt");
        if (! in.is_open())
         cout << "Error opening file"; exit (1); 
        while (!in.eof() )
        
            in.getline (buffer,100);
            cout << buffer << endl;
        
        return 0;
    

3、使用操作系统中的API函数,比如Windows上的ReadFile()、OpenFile()等等,现在操作系统一般都具备内存文件映射功能,对于大的txt文件,一般都使用这种方式操作。 

参考技术A FILE *fin=freopen("input.txt","r",stdin);
FILE *fout=freopen("outfile.txt","w",stdout);
加上这个就和普通的命令行下读写一样了。。你可以尝试一下,如果都加上就是文件读写,在控制台就看不到信息的
你可以把input.txt 改成file1.txt然后再处理
参考技术B #include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()

ifstream input;
input.open("file1.txt");
if (input.fail())

cout<<"open the file error!\n";
exit(1);


string str;
if (input>>str)//输入串

int len = str.length();
string result;
int count = 0;
int i;
for (i = 0; i < len; i++)

if (isdigit(str[i]))//判断串里的数字

result += str[i];
count++;



int k;
int temp;

for (i = 0; i < count -1; i++)//排序

k = i;
for (int j = i+1; j < count; j++)

if (result[j] < result[k])

k = j;



if (k != i)

temp = result[k];
result[k] = result[i];
result[i] = temp;




ofstream output;
output.open("filenum.txt");
if (output.fail())

cout<<"open file error!\n";
exit(1);


output<<result<<endl;
output.close();


input.close();

return 0;

本回答被提问者采纳
参考技术C 对任意输入的字符串,将其按照指定的次数插入到指定的文件中 参考技术D 你打开有误哦! 可可

以上是关于用C语言读出文件行数的主要内容,如果未能解决你的问题,请参考以下文章

怎样用C或C++(最好是C)语言向Access数据库写入或读出数据?

用c语言怎么读取txt文件中的行数

用c语言写一个职工工资管理程序

C语言从文件中读出数据构造成链表

用linux c语言编写 为一个文件里面的内容的每一行添加一个指定的字符

如何用C语言监视一文件,(可以隔一定时间检测该文件),当文件相比较上一时间有改动时,读出改动处