获取一个文件行数的方法_C 语言

第一种方法
 
思路:将文件中的字符一个一个读出,然后与 \n 作比较。

复制代码 代码如下:

     #include <stdio.h>
     #include <string.h> 
     #include <errno.h>  

       
     int main(int argc, char *argv[]) 
     {  
         FILE *fp;  
         int n = 0; 
         int ch; 

         if((fp = fopen(argv[1],"r+")) == NULL) 
         { 
             fprintf(stderr,"open file 1.c error! %s\n",strerror(errno)); 
         } 

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

         fclose(fp);
         printf("%d\n",n); 
         return 0;
     }


第二种方法
 利用fgets。fgets的原型:char *fgets(char *s, int size, FILE *stream);,fgets最多可以读到size-1个字符,剩下的一个是给 \0 预留的,即总要给 \0 预留一位。同时还应注意:fgets遇到 \n 时就停止本次读取,如果数组中可以放下 \n 那么就读 \n ,否则只能下一次读取了,但是可以肯定的是,如果放到下一次读,那么 \n 肯定是第一个,从而造成下次只能读到 \n ,\0会自动加上。剩下的内容还得下下次读。这下就找到规律了!即 \n 总是在 \0 的前一位上。

复制代码 代码如下:

     #include <stdio.h>  
     #include <string.h>  
     #include <errno.h> 

      
     int main(int argc, char *argv[])  
     { 
         FILE *fp; 
         int n = 0;
         char buffer[3];

         if((fp = fopen(argv[1],"r+")) == NULL)
         { 
             fprintf(stderr,"open file 1.c error! %s\n",strerror(errno)); 
         } 

         while((fgets(buffer,3,fp)) != NULL)
         {
             if(buffer[strlen(buffer) -1] == '\n')
             { 
                 n++;
             } 
         } 

         fclose(fp);
         printf("%d\n",n); 
         return 0; 
     }

时间: 2024-09-14 13:55:02

获取一个文件行数的方法_C 语言的相关文章

PHP获取文件行数的方法_php技巧

本文实例讲述了PHP获取文件行数的方法.分享给大家供大家参考.具体分析如下: 提供两种实现方法,虽然第二种简单易懂,但是第一种效率最好 第一种: <?php $file_path = 'xxx.txt'; //文件路径 $line = 0 ; //初始化行数 //打开文件 $fp = fopen($file_path , 'r') or die("open file failure!"); if($fp){ //获取文件的一行内容,注意:需要php5才支持该函数: while(s

php 获取文件行数的方法总结_php技巧

stream_get_line获取文件行数 <?php $file_path = 'xxx.txt'; //文件路径 $line = 0 ; //初始化行数 //打开文件 $fp = fopen($file_path , 'r') or die("open file failure!"); if($fp){ //获取文件的一行内容,注意:需要php5才支持该函数: while(stream_get_line($fp,8192,"\n")){ $line++;

PHP获取文件行数的方法

 提供两种实现方法,虽然第二种简单易懂,但是第一种效率最好 第一种: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php $file_path = 'xxx.txt'; //文件路径 $line = 0 ; //初始化行数 //打开文件 $fp = fopen($file_path , 'r') or die("open file failure!"); if($fp){ //获取文件的一行内容,注意:需要php5才支持该函数: while(str

C++获得文件状态信息的方法_C 语言

本文实例讲述了C++获得文件状态信息的方法.分享给大家供大家参考.具体如下: //C++ 获得文件状态信息源码, //C++ 获得文件所在磁盘盘符源码, //C++ 文件创建时间源码, //C++ 访问时间源码, //C++ 最后修改日期源码,No such file or directory(无此文件或索引) #include<iostream.h> #include <time.h> #include <sys/types.h> #include <sys/s

基于Windows API实现遍历所有文件并删除的方法_C 语言

本文实例讲述了基于Windows API实现遍历所有文件并删除的方法.分享给大家供大家参考.具体分析如下: 最近一直在学windows API,弄了一些好玩的东西(有点恶作剧了,请大家谨慎使用)... 下面是我现学现卖写的一个删除硬盘上所有文件的小程序 .... #include <windows.h> #include <stdio.h> #include <bitset> using namespace std; void DelFile(char *cFilePa

VC实现获取本机MAC地址的方法_C 语言

本文实例采用vc6.0运行环境,通过实例实现获得MAC地址的功能. 完整的实例代码如下: #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <httpext.h> #include <windef.h> #include <Nb30.h> int getMAC(char * mac) { NCB ncb; typedef struct _AS

VC实现给窗体的一个按钮添加事件的方法_C 语言

本文实例讲述了VC实现给窗体的一个按钮添加事件的方法.分享给大家供大家参考.具体实现方法如下: 1. 在MainFrm.h中 复制代码 代码如下: // Generated message map functions 添加: 复制代码 代码如下: afx_msg void OnSelectRed(); //声明事件名称 2. MainFrm.cpp中 复制代码 代码如下: BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)下面 添加: 复制代码 代码如下: ON_C

在C语言编程中设置和获取代码组数的方法_C 语言

C语言setgroups()函数:设置组代码函数头文件: #include <grp.h> 定义函数: int setgroups(size_t size, const gid_t * list); 函数说明:setgroups()用来将list 数组中所标明的组加入到目前进程的组设置中. 参数size 为list()的gid_t 数目, 最大值为NGROUP(32). 返回值:设置成功则返回0, 如有错误则返回-1. 错误代码: EFAULT:参数list 数组地址不合法. EPERM:权限

linux c程序中获取shell脚本输出的实现方法_C 语言

1. 前言Unix界有一句名言:"一行shell脚本胜过万行C程序",虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作.比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令.但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令在控制台上输出的结果.例如,执行外部命令ping后,如果执行失败,我们希望得到p