gpt4 book ai didi

c - 有没有办法在 scanf() 函数中强制输入空格?

转载 作者:行者123 更新时间:2023-12-03 23:11:43 24 4
gpt4 key购买 nike

例如,我想让用户在值之前键入所需的消息,如下所示:

scanf(" Message%c", &character);
没关系,但是我希望这条消息包含一些像这样的空格:
scanf(" A required message %c", &character);
编译器不会提示任何东西,但空格无关紧要,输入:
A required message C
ArequiredmessageC
给出相同的结果。
有没有办法让这些空格成为强制性的?

最佳答案

您可以使用 %[带有 1 的转换说明符长度修饰符和 *抑制赋值:

if (scanf("%*1[ ]A%*1[ ]required%*1[ ]message%*1[ ]%c", &character) == 1) {
// Input is conforming, last character is in `character`
} else {
// Input is not as expected...
// but there is no way to tell how many characters were correct
}
这非常繁琐且难以阅读。您可以使用 fgets()作为备选:
char buf[80];
if (fgets(buf, sizeof buf, stdin) {
const char *prefix = " A required message ";
size_t len = strlen(prefix);
if (!memcmp(buf, prefix, len)) {
char c = buf[len];
// handle correct message
} else {
printf("Invalid input: %s", buf);
}
} else {
printf("Unexpected end of file\n");
}

关于c - 有没有办法在 scanf() 函数中强制输入空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62949954/

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