C语言 被跳过的扫描字符串



我正在写一段代码,我需要能够输入2个int值和一行中间有空格的数字,所以我写:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
int L, X;
char lin[25] = {};
scanf("%d", &L);
scanf("%s", &lin);
scanf("%d", &X);
return 0;
}

在控制台中,我输入第一个数字(L),这是有效的,但是当第二次扫描字符串应该发生时,它只是跳过它(如在调试器中所见),并将我在该行中写的第一个数字分配给X变量。此外,locals选项卡显示字符串lin的第一行通常是'n',我不认为它来自我的键盘,当我按下该键时发送两倍的信号量。我尝试使用fgets(lin, 25, stdin),但它做同样的事情。

有没有人知道如何输入int,字符串(数字和字符的空格)和int的顺序?

我想输入int,字符串(数字和字符的空格)和按顺序输入的int

如果你想读取带有嵌入空格的字符串,那么不要调用

scanf("%s", &lin);

scanf( " %24[^n]", lin);

注意两个细节。在调用scanf时,第二个参数表达式&lin的类型不正确。当你传递一个类型为char ( * )[25]的参数时,函数需要一个类型为char *的参数。

并查看scanf示例的格式字符串中的前导空格。它允许跳过空白字符,例如,在前一次调用scanf后按回车键后存储在缓冲区中的新行字符'n'

相关内容

  • 没有找到相关文章

最新更新