gpt4 book ai didi

c - 无法通过 getchar() 将包含 ASCII 值的整数变量与 '\t' ,'\' 进行比较;

转载 作者:行者123 更新时间:2023-11-30 20:57:48 27 4
gpt4 key购买 nike

我正在用 C 语言编写代码,带有自定义输入。并且在将 int 变量与 '\'、'\t'(通常是转义序列)进行比较时遇到问题。这里整型变量存储字符的 ASCII 值。并且由getchar()获取。

我尝试过更改编译器,并且还尝试使用 scanf() 来执行此操作并在另一个级别上存储值。但对于每个进程,将“\”作为不同的字符,将“t”作为不同的字符。甚至无法比较“\”。显示缺少终止字符。

#include <stdio.h>

int main()
{
int c;
while((c=getchar())!=EOF)
{
if(c=='\')
printf('x');
}
return 0;
}

如果c=='\',我想打印x。真正的代码有点太长了。我确信其他部分没有错误,但无法得到这个。我在网上看到的每个代码都有效。但我的却不是。

最佳答案

反斜杠是转义字符,您需要使用双反斜杠来制作包含单个反斜杠的字 rune 字:

if (c=='\\')

如果没有额外的反斜杠,单个反斜杠会转义结束单引号,因此字 rune 字不会结束,并且代码将无法编译(在极少数情况下,它可能会编译垃圾)。

对于 \t,如果您想与实际选项卡进行比较,if (c=='\t') 就可以了。但是,如果您想识别后跟 t 的文字反斜杠,则需要将其分为两部分进行识别,首先是反斜杠,然后读取另一个字符以查看 t >,例如:

int main()
{
int c;
while((c=getchar())!=EOF)
{
if (c == '\\') {
printf("Found escape beginning\n");
if ((c = getchar()) == EOF) break;
if (c == 't')
printf("Found backslashed 't'\n");
}
}
return 0;
}

注意:您的 printf 也是错误的,因为它将字 rune 字传递给 printf,而不是字符串文字。我已经在上面的扩展代码中修复了它;您的原始代码会将 printf('x'); 更改为 printf("x");

关于c - 无法通过 getchar() 将包含 ASCII 值的整数变量与 '\t' ,'\' 进行比较;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56260102/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com