朋友这几天在笔试中有遇到一道题,题目是求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
阅读(995) | 评论(0) | 转发(0) |