C程序设计语言第二版_No.002:第二个C程序练习

  本题根据C程序设计语言第二版中第一章第一节的统计输入当中的单词数、字符数、行数等信息的用例和相关习题揉合而来。本文是尽量模仿参考UNIX中的WC命令,但对数字的检测以及标点符号的处理是弱化的,后续版本再考虑解决此问题。同时由于原文采用的是交互输入,考虑到调试程序的方便且尽量模仿WC命令所以直接在程序中指定文本文件打开。主要是用来练习:

  1. 如何统计给定的文本文件中的各项信息:如行数、回车换行符、空白字符数、单词数、标点符号数等;

  2. 文件指针;

  3. 文件流的操作;

  4. ambition.txt可以进行替换为其他文本文件名;

  5. 数字暂时作为单词处理;

  题目:根据给定的文本文件统计文件的各项信息:如行数、回车换行符、空白字符数、单词数、标点符号数等。(因为还未练习命令行带参,所以用程序内指定文件解决。)

int artwc(void){
  FILE *fp;
  char ch;
  int state,na,nl,nb,nc,nw,np;
  state=na=nl=nc=nb=nw=np=0;//na所有字符、nl换行回车符、nb空白字符含空格、nw单词数、nc英文字符数、np标点符号、state单词状态检查
  if((fp=fopen("ambition.txt","r"))==NULL)printf("ERROR:opening file failed!
");
  else
    while((ch=fgetc(fp))!=EOF){
      na++;
      if(ch=='
'||ch=='r')nl++;
      if(ch==' '||ch=='
'||ch=='	'||ch=='r'){
        nb++;
        if(state==IN){printf("
");state=OUT;}
      }
      else
        if(ch=='!'||ch==','||ch=='.'||ch=='?'||ch==';')np++;
        else
          if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch==''')||(ch=='-')||((ch>='0')&&(ch<='9'))){
            nc++;
            if(state==OUT)nw++;
            state=IN;
            putchar(ch);
          }
    }
  fclose(fp);
  printf("当前文件共有%d行、%d个字符、%d个空白字符、%d个英文字符数、%d个标点符号、%d个单词
",nl,na,nb,nc,np,nw);
  return 0;
}

  编译环境:GCC for windows V 3.3.1

  运行结果如下:

展开阅读全文

页面更新:2024-02-25

标签:词数   程序   标点符号   英文   单词   字符   空白   命令   文件   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top