C如何正确获取输入

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

我正在尝试从用户那里得到一个句子和一封信,由于某种原因,它没有收到这封信scanfgetcahr()的作用不同;

void main(){

    char str[100];
    char letter;
    printf("Enter a line: \n");
    scanf("%s", str);
    printf("Enter a letter: ");
    scanf("%c", &letter);
    printf("%c", letter);
}

尝试将NULL放入字母中没有区别

c input scanf getchar
3个回答
0
投票

[一个可能的原因可能是在获取字符串时,按回车键后将换行。因此,我们需要告诉scanf避免换行符。尝试在%c前面放置一个空格,这将告诉scanf忽略换行符。scanf(“%c”,&letter)


0
投票

//似乎行为异常,具体取决于编译器。我使用CLion运行以下代码,并在scanf的百分号之前添加了空格。

//希望能有所帮助:)

#include <stdio.h>

int main() {
    char name[100];
    char a;

    printf("enter anything \n");
    scanf(" %s %c", &name,&a);
    printf("%s space   %c",name,a);
    return 0;
}

0
投票

scanf("%s"读取空格分隔的单词,NOT一行。因此,它将跳过输入上的所有初始空白,然后读取非空白字符,直到(且不包括)下一个空白字符为止。由于换行符是空格,它将结束此过程,但是其他任何空格也将结束它。

scanf("%c"读取单个字符without跳过任何空格(与getchar相同)。它不会跳过空白的事实意味着,如果您在scanf("%s"之后直接使用它,则将获得在第一个scanf结尾的所有空白字符。

如果要读取一行,请使用fgetsgetline

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