- 实例要求:
- 使用
标准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
#include
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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
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