IO学习系列之使用fgetc函数实现Linux命令“wc -l”和“wc -c”的功能

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

  • 运行结果:
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
  • 本示例代码,仅供参考;

你可能感兴趣的:(IO学习系列,学习,linux,c语言,前端,算法,标准IO)