繁体   English   中英

跳过 Scanf 字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM