将 getchar 与字符 returns 进行比较会发出警告并给出错误的代码
comparing getchar with a character returns a warning and gives me the wrong code
我在使用 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将始终 return 0 即使我用作输入的文件中的第一个字符是换行符。
您正在比较 char
和 char *
,即字符串。 ""(双引号)值在 C 中被视为字符串,因此您的代码应该是
if (result == '\n') {
linecount++;
}
或者,您可以使用 strcmp
或 strncmp
并将字符转换为指针,但这不是必需的。
请注意,char 的大小小于 int,因此从 char 到 int 的转换不会让您丢失任何东西。
我在使用 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将始终 return 0 即使我用作输入的文件中的第一个字符是换行符。
您正在比较 char
和 char *
,即字符串。 ""(双引号)值在 C 中被视为字符串,因此您的代码应该是
if (result == '\n') {
linecount++;
}
或者,您可以使用 strcmp
或 strncmp
并将字符转换为指针,但这不是必需的。
请注意,char 的大小小于 int,因此从 char 到 int 的转换不会让您丢失任何东西。