- 实例要求:
- 使用
标准IO的库函数
中的fgetc函数
实现Linux
命令“wc -l
”和“wc -c
”的功能; - 实例分析:
- “
wc -l xxx.txt
”:统计当前目录下xxx.txt文件的行数
; - “
wc -c xxx.txt
”:统计当前目录下xxx.txt文件的字符数
; strcmp() 函数
:int strcmp(const char *str1, const char *str2)
,利用此函数,与“-l
”和“-c
”分别做比较即可;- 示例代码:
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
if(3 != argc)
{
printf("Usage : %s pathname\n",argv[0]);
return -1;
}
FILE *fp = fopen(argv[1],"r");
if(NULL == fp)
{
perror("fopen error");
return -1;
}
int line_num = 0;
int char_num = 0;
int ret = 0;
while (EOF != (ret = fgetc(fp)))
{
if('\n' == ret)
{
line_num++;
}
char_num++;
}
if(0 == (strcmp(argv[2],"-l")))
{
printf("line_num = %d\n",line_num);
} else if (0 == (strcmp(argv[2],"-c"))){
printf("char_num = %d\n",char_num);
}
fclose(fp);
return 0;
}
linux@ubuntu:~$ ./a.out xxx.txt -l
line_num = 5
linux@ubuntu:~$ ./a.out xxx.txt -c
char_num = 26
linux@ubuntu:~$ wc -l xxx.txt
5 xxx.txt
linux@ubuntu:~$ wc -c xxx.txt
26 xxx.txt