Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27717
  • 博文数量: 17
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-18 15:15
文章分类
文章存档

2010年(17)

我的朋友
最近访客

分类: C/C++

2010-05-07 18:00:48

朋友这几天在笔试中有遇到一道题,题目是求Linux系统下某文件有多少行。朋友请我帮忙给出解答。如下:


/***********************************************
* line.c
*
* 功能:返回一个文件有多少行
* 本程序不适用于Windows平台下的文件。
* Using: ./line FILENAME
*
* Author: Alvin
*
************************************************/

 
#include<stdio.h>
#include<stdlib.h>
#include <unistd.h>
 
int main(int argc, char **argv)
{
         FILE *fp;
         int line=0;
 
    /* 判断命令格式是否正确,需指定要查询的文件名(可以使用相对路径,也可以使用绝对路径) */
         if (argc != 2)
         {
                   printf("\nUsing: ./line FILENAME\n\n");
                   exit(-1);
         }

         /*判断文件是否存在*/
         if (access(argv[1],F_OK))
         {
                   printf("Can't find the %s!\n",argv[1]);
                   exit(-1);
         }

    /* 打开文件 */
         fp=fopen(argv[1],"r");
         if(fp == NULL)
         {
                   printf("Can not open the file!\n");
                   exit (0);
         }
 
    /* 判断文件是否到达结尾 */
         while (!feof(fp))
         {
                   if (fgetc(fp)=='\n')
                            line++;
         }
         fclose(fp);

         printf("\n%s has %d line(s).\n\n",argv[1],line);
         return 0;
}


由于Linux与Windows平台下,换行符不对,所以本文所写出的代码只适用于Linux平台下。对于Windows平台下的文件行数要在此结果的基础上加1
阅读(970) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~