c - 检测C中的空行

标签 c string parsing

我正在尝试逐行保存输入,并将其存储在字符串中。我需要能够检测到空行或仅由空格组成的行,并在发生时打印“忽略”。我怎么做? strlen(str) == 0 似乎不起作用。

int getLine(char str[]) {
  int i = 0;
  int c;
  while (i < N - 1 && (c = getchar()) != EOF && c != '\n') {
    str[i] = c;
    ++i;
  }
  if (c == EOF) return 0;
  str[i] = '\0';
  return 1;
}

最佳答案

只包含空格的行不是空行。它充满了空间。

有多种方法可以做到这一点。希望这很清楚。

// Returns nonzero iff line is a string containing only whitespace (or is empty)
int isBlank (char const * line)
{
  char * ch;
  is_blank = -1;

  // Iterate through each character.
  for (ch = line; *ch != '\0'; ++ch)
  {
    if (!isspace(*ch))
    {
      // Found a non-whitespace character.
      is_blank = 0;
      break;
    }
  }

  return is_blank;
}

关于c - 检测C中的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30111018/

相关文章:

c - 在 yyparse() 调用时执行操作?

c - 设置 Spotify-API-服务器

c - 读取单词的功能只读取每隔一个字母

php - 在 PHP 中使用 preg_replace() 中的每个匹配项

java - iPhone Java 字符串代码到对象 C

C++ strlen(ch) 和 sizeof(ch) strlen

parsing - F# 中是否有任何已知的解析器组合库可以解析二进制(非文本)文件?

json - 如何解析 Json 中的部分对象

java - 解析格式错误/不完整/无效的 XML 文件

java - 字符串替换最后的所有特殊字符