[英]Scanf string being skipped
我正在编写代码,我需要能够输入 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)并且它有效但是当应该发生字符串的第二个 scanf 时它只是跳过它(如在调试器中所见)并将我在行中写的第一个数字分配给 X 变量. locals 选项卡还显示字符串 lin 的第一行通常是 '\n' 并且我认为当我按下该键时它不会从我的键盘发送双倍数量的信号。 我尝试使用 fgets(lin, 25, stdin) 但它做同样的事情。
有谁知道如何按顺序输入 int、字符串(数字和字符的空格)和 int?
我厌倦了按顺序输入 int、字符串(数字和字符的空格)和 int
如果你想读取一个带有嵌入空格的字符串,而不是这个调用
scanf("%s", &lin);
写
scanf( " %24[^\n]", lin);
注意两个细节。 在您调用scanf
时,第二个参数表达式&lin
的类型不正确。 function 需要一个char *
类型的参数,而您传递的是char ( * )[25]
类型的参数。
并查看提供的scanf
示例的格式字符串中的前导空格。 它允许跳过空白字符,例如在前面调用scanf
后按下 Enter 键后存储在缓冲区中的换行符'\n'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.