我正在写一段代码,我需要能够输入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'
。