【问题标题】:comparing getchar with a character returns a warning and gives me the wrong code将 getchar 与字符进行比较会返回警告并给我错误的代码
【发布时间】:2017-07-06 00:23:49
【问题描述】:

我在使用 getchar() 和文件重定向进行比较时遇到问题。

我有一个类似这样的代码:

char result = getchar(); // getchar returns the next char in the file
int linecount = 0;

if (result == "\n") {
    linecount++;
}

但我在编译时收到警告。它说我不能将 int 与指针进行比较,但据我了解,结果是 char,“\n”也是如此,所以我真的很困惑。我也可以使用 printf("%c", result") 并且它工作正常,这意味着结果是一个字符。有谁知道我为什么会收到这个错误?谢谢!另外,运行代码,linecount 将始终返回 0即使我用作输入的文件中的第一个字符是换行符。

【问题讨论】:

  • "\n" --> '\n'。期间。
  • 哦,还有char result --> int result
  • 确实 getchar 返回 int 您将其分配给 char 然后与 char* 进行比较。
  • 好的,非常感谢您的帮助!
  • 1) getchar() 返回 int,而不是 char 2) "\n" 声明一个多字节字符串。该代码应与字符 '\n' 进行比较

标签: c input getchar


【解决方案1】:

您将charchar *(即字符串)进行比较。 "" (双引号)值在 C 中被视为字符串,因此您的代码应该是

if (result == '\n') {
    linecount++;
}

或者,您可以使用strcmpstrncmp 将字符转换为指针,但这不是必需的。

请注意,char 的大小小于 int,因此从 char 到 int 的转换不会让您丢失任何内容。

【讨论】:

  • 或者,您可以使用 strcmp 或 strncmp 将字符转换为指针,实际上,NUL 终止符在哪里?
  • 好的,非常感谢!我从来不知道 "" 和 '' 之间的区别,所以这很有帮助!
猜你喜欢
  • 1970-01-01
  • 2010-11-05
  • 2022-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多