计算 C 中的特定字符?

标签 c

while ((temp = fgetc(fp)) != EOF)
  {

  if(temp == '\n')
  {
      chars++;
      lines++;
      if((temp = fgetc(fp)) != EOF && (temp == '(' || temp == ')' || temp == '{' || temp == '}'))
          {
              chars++;
              brackets++;
          }
      }
  }

基本上我想计算随机 c 文件中的每个 ()、{} 和行。这个循环很好地计算了行数,但未能计算出所有指定的符号。知道这是为什么吗?

最佳答案

考虑一个简单的状态机结构,例如:

int ch;

while ((ch = getc(fp)) != EOF) {
  switch (ch) {
  case '\n':
     chars++;
     lines++;
     break;
  case '(': case ')': /* ... */
     chars++;
     brackets++;
     break;
  }
}

关于计算 C 中的特定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297292/

相关文章:

c++ - 无符号字符串

c - 类型转换时需要左值作为赋值的左操作数

c - 在 C 中声明指针类型的参数时使用 `const`

c - 一个函数的多个定义,首先在这里定义

c - 需要帮助修复此 C Socket ICMP 程序

c - 从上到下

c - C 中的垂直翻转位图不起作用

c++ - 无符号类型按位移位的 RHS 操作数类型

c - 在 C 中使用空终止字符作为空指针

c - 内存中数据的有符号和无符号表示?