实例要求: 使用标准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