免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: alizh
打印 上一主题 下一主题

请问如何在c程序中判断一个文件(unix或linux系统中)的行数? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2005-09-20 13:01 |只看该作者

请问如何在c程序中判断一个文件(unix或linux系统中)的行数?

原帖由 "wenuy" 发表:
再长也不会超过255的
用fget肯定可以
就是要bianli (忘了怎么写了) 全文,



文本文件中行的长度是根据LINE_MAX定义的

论坛徽章:
0
22 [报告]
发表于 2005-09-20 15:45 |只看该作者

请问如何在c程序中判断一个文件(unix或linux系统中)的行数?

楼上的,哈哈!
中文字符 >; 127

当然\n\r都不是中文字符

论坛徽章:
0
23 [报告]
发表于 2005-09-20 15:59 |只看该作者

请问如何在c程序中判断一个文件(unix或linux系统中)的行数?

一次读一大块,然后找'\n'的数量,效率应该不会差

论坛徽章:
0
24 [报告]
发表于 2005-09-20 16:34 |只看该作者

请问如何在c程序中判断一个文件(unix或linux系统中)的行数?


  1. #include <stdio.h>;
  2. #include <stdlib.h>;
  3. #include <string.h>;
  4. int main(void)
  5. {
  6.   char buff[]="aaaa\nbbbbb\ncccc\n";
  7.   int irows_count=0;
  8.   if( strtok(buff,"\n") != NULL )
  9.           irows_count++;
  10.   while(  strtok(NULL,"\n") != NULL )
  11.           irows_count++;
  12.   printf("%d\n",irows_count);
  13.   return 0;
  14. }
复制代码

论坛徽章:
0
25 [报告]
发表于 2005-09-21 15:39 |只看该作者

请问如何在c程序中判断一个文件(unix或linux系统中)的行数?

来个啥都不考虑的:

int CntLine(FILE *fp)
{
  char c1;
  long iCnt=0;

  while( (c1=fgetc(fp))!=EOF ) {
    if ( c1=='\n' ) iCnt++;
  }
  return iCnt;
}

论坛徽章:
0
26 [报告]
发表于 2005-09-21 15:44 |只看该作者

请问如何在c程序中判断一个文件(unix或linux系统中)的行数?

C语言里恐怕没有提供这样傻瓜的函数,怕人家碰见大文件用了嫌慢^_^,你要对效率没啥特殊要求,就这个得了,简单,实惠,看起来也不累(怎么象什么广告)

论坛徽章:
0
27 [报告]
发表于 2005-09-22 11:03 |只看该作者

请问如何在c程序中判断一个文件(unix或linux系统中)的行数?

现在的人呀
0x0d0a不就是回车换行么

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
28 [报告]
发表于 2005-09-22 11:13 |只看该作者

请问如何在c程序中判断一个文件(unix或linux系统中)的行数?

原帖由 "crackpot" 发表:
现在的人呀
0x0d0a不就是回车换行么


看好了 帖子的题目..
那里来的回车换行.

论坛徽章:
0
29 [报告]
发表于 2005-09-22 12:10 |只看该作者

请问如何在c程序中判断一个文件(unix或linux系统中)的行数?

unix 中fgets 是自动按行取的,如果你给的一行存储空间不足,系统会自动只取给定存储空间的字符数,所以统计fgets的次数就可以统计文件的行数.


char strData[513];//先读取一行看是否可行
if(fgets(strData,512,file)==NULL)
{
     trace << endl << "open first line  error! " << endl;
     return nReturn;
}
{
  ....
}
while (fgets(strData,512,file)!=NULL);

论坛徽章:
0
30 [报告]
发表于 2010-07-19 22:17 |只看该作者
使用循环判断一共有多少个/n。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP