免费注册 查看新帖 |

Chinaunix

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

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

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

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

原帖由 "angleeye" 发表:


中文怎么会没有\n'?????
0x0d0a='\n\r'

用ultraEdit去看一下吧。


大哥,结合上下文好不好?我是说中文编码里面没有,不用考虑'\n'不是换行的情况。

还有啊,俺用hex workshop,不用UE,谢谢。

论坛徽章:
0
12 [报告]
发表于 2005-09-19 21:58 |只看该作者

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

原帖由 "alizh" 发表:
请问如何在c程序中判断一个文件(unix或linux系统中)的行数?
即看这个文件中有多少行?



  1. #include <stdio.h>;
  2. #include <limits.h>;

  3. main( int argc, char **argv )
  4. {
  5.     char linebuff[LINE_MAX];
  6.     FILE *fp;
  7.     int i=0;

  8.     if( (fp=fopen( argv[1], "r" )) == NULL )
  9.     {
  10.         printf( "open file error!\n" );
  11.         exit( -1 );
  12.     }

  13.     while( 1 )
  14.     {
  15.         if( fgets( linebuff, LINE_MAX, fp ) == NULL )
  16.         {
  17.             if( feof( fp ) )
  18.             {
  19.                 printf( "total %d lines\n", i );
  20.                 fclose( fp );
  21.                 exit( 0 );
  22.             } else {
  23.                 printf( "read file error!\n" );
  24.                 fclose( fp );
  25.                 exit( -1 );
  26.             }
  27.         }

  28.         i++;
  29.     }
  30. }
复制代码

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

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

原帖由 "angleeye" 发表:


中文怎么会没有\n'?????
='\n\r'

用ultraEdit去看一下吧。

先不忙着用ultraEdit去看,说说0x0d0a是个什么汉字?!

论坛徽章:
0
14 [报告]
发表于 2005-09-20 08:54 |只看该作者

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

再长也不会超过255的
用fget肯定可以
就是要bianli (忘了怎么写了) 全文,

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

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

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

何以见得不会超过255?
判断'\n'才是真正的出路.

顺便说一句,我也没见过0d0a的中文编码.

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

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

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


为啥?给个理由先。

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

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

汉字两个字节的最高位都是1
去掉这两个1后得到的就是国标的两个向量
在UCDOS下面有个区位输入法,就是输的这两个向量,现在知道的人已经很少了。。。

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

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

原帖由 "yzc2002" 发表:
汉字两个字节的最高位都是1
去掉这两个1后得到的就是国标的两个向量
在UCDOS下面有个区位输入法,就是输的这两个向量,现在知道的人已经很少了。。。


嘿嘿,俺知道,最近刚稍微研究了下这个。

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

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

那就是说
只要读到一个<0的字节就是汉字了
right?

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

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

原帖由 "yzc2002" 发表:
汉字两个字节的最高位都是1
去掉这两个1后得到的就是国标的两个向量
在UCDOS下面有个区位输入法,就是输的这两个向量,现在知道的人已经很少了。。。


汉字现在可以是4个字节了,而且操作系统也已经都支持了,所以,原来的方法不灵了。
你说的区位码,在很多年前就已经失效了,因为GBK就没有区位码了。
汉字编码已经进入第3阶段:GB2312->;GBK->;GB18030。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP