gpt4 book ai didi

c - 如何使用 scanf 检查 '\n'

转载 作者:太空宇宙 更新时间:2023-11-03 23:37:20 25 4
gpt4 key购买 nike

在这里向 C 菜鸟致歉,

我正在尝试验证来自 stdin 的用户输入,但找不到处理单个 \n 输入的方法。为了完全简化问题,我写了下面的内容。当输入 \nscanf 完成,如果这是输入的第一个字符,例如用户直接点击回车,6 将由printf 语句。

int main(){
char x[6];
scanf("%[^\n]s", x);
printf("%i\n", strlen(x));
return 0;
}

我的问题是我无法找到判断用户输入的是 \n 还是 6 个合法字符的方法。我还想设置一个 MAX 输入检查,我不确定 scanf 是否是在这种情况下接受用户输入的写入函数,或者 fgets 可能更适合。

最佳答案

您可以使用 getchar() 来检查每个单独的输入字符,并在输入大小为 6 或用户输入 \n 时停止接收输入。

编辑: 我已经根据@chux 的建议更新了我的代码。您应该将数组大小增加到 7,以便在输入超过 6 个字符时最后一个字符可以作为空终止符。我还使用了一个 int 变量 c 来存储 getchar 的返回值,而不是直接存储到 x[i] 以便它可以识别 EOF

#include<stdio.h>
#include<string.h>

int main(){
char x[7];
int c;
size_t i = 0;
while (i < 6 && (c=getchar()) != EOF) {
x[i] = c;
if (x[i] == '\n') {
break;
}
++i;
}
x[i] = '\0'; // null-terminate string
printf("%s\n", x);
printf("%lu\n", strlen(x));
return 0;
}

关于c - 如何使用 scanf 检查 '\n',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55782785/

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