【问题标题】:reading files using fgetc使用 fgetc 读取文件
【发布时间】:2011-06-14 22:37:21
【问题描述】:

我有一个关于使用 fgetc 计算指定文件中的字符数的问题。 当您必须单独计算字符类型时,您如何使用它?例如,我只想计算小写字符的数量,或者空格的数量,或者标点符号等?有人可以举一个简短的例子吗?谢谢

我试着做这个程序,希望能计算字符的总数,你如何挤进不同字符类型的数量?我不确定这个程序是否正确

#include <stdio.h>
int main (void)
{
    //Local declarations
    int a;
    int count = 0;
    FILE* fp;

    //Statements
    if (!(fp = fopen("piFile.c", "r")))
    {
    printf("Error opening file.\n");
    return (1);
}//if open error

      while ((a = fgetc (fp)) != EOF)
      {
      if (a != '\n')
      count++;
      printf("Number of characters: %d \n", count);

      else
      printf("There are no characters to count.\n");
      }
      fclose(fp);
      return 0;
}

【问题讨论】:

  • 您的 if/else 是语法错误,因为 if 部分不在大括号中。请提供一个可编译的 C 文件,最好带有反映代码结构的缩进。

标签: fgetc


【解决方案1】:

阅读这些功能:

   int isalnum(int c);
   int isalpha(int c);
   int isascii(int c);
   int isblank(int c);
   int iscntrl(int c);
   int isdigit(int c);
   int isgraph(int c);
   int islower(int c);
   int isprint(int c);
   int ispunct(int c);
   int isspace(int c);
   int isupper(int c);
   int isxdigit(int c);

你马上就会知道怎么做。

【讨论】:

    【解决方案2】:

    在您的 while 中,您可以对要检查的每个字符使用 if 语句。

    if(isalnum(a){
        counta++;
    }
    else if(isalpha(a)){
        countb++;
    }
    else if(isascii(a)){
        countc++;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多