未知错误函数'scanf(“%[^ \ n]%* c”,&sent);'

问题描述 投票:0回答:1

开始,我是C语言的初学者,只是在C程序中遇到了输入字符串的怪异方法:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    char ch, string[100], sent[100];
    scanf("%c", &ch);
    scanf("%s", &string);
    scanf("%[^\n]%*c", &sent);

    printf("%c\n", ch);
    printf("%s\n", string);
    printf("%s", sent);

    return 0;
}

这里是错误:最后一行(句子)没有打印,不知道我错了,但是在研究中我找到了此代码:

scanf(" %[^\n]%*c", &sent); //not theres a space before %[^\n]%*c; and then it worked (wtf)

您能通过在其中添加一个空格来解释为什么它起作用。

c output scanf format-specifiers
1个回答
1
投票

格式字符串中的空格()导致scanf跳过输入中的空白。通常不需要它,因为大多数scanf转换在扫描任何内容之前也会跳过空格,但是两个不为%c%[的空格-因此在%[之前使用空格具有明显的效果。让我们看看您的3个scanf调用做什么:

© www.soinside.com 2019 - 2024. All rights reserved.