到达特定字符后如何停止读取输入

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

我们假设有人在写一些文字。我的程序必须扫描该文本,然后在彼此之间打印所有字符。但是,它仅应读取输入,直到*出现。因此,当输入为“ Hello * darling”时,应仅读取“ Hello”。我在while循环中使用*作为参数,但是我的程序扫描的是“ Hello *”而不是“ Hello”。我如何摆脱*?

#include <stdio.h>

int main()
{
    char c1;
    while (c1!='*'){
        scanf("%c", &c1);
        printf("c1: %c \n", c1);
     }
    return 0;
}
c
2个回答
0
投票

您可以切换scanfprintf语句,并在循环前放置一个初始的scanf

int main()
{
    char c1;
    scanf("%c", &c1);
    while (c1 != '*') {
        printf("c1: %c \n", c1);
        scanf("%c", &c1);
    }
    return 0;
}

还请注意,由于您的程序当前正在打印*,因此不仅存在问题,而且由于c1在首次运行c1 != '*'时未初始化,因此它是未定义的行为。


0
投票

您应该看getchar()

#include <stdio.h>

int main()
{
    char c1;
    while ((c1=getchar())!='*'){
       printf("c1: %c \n", c1);
    }
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.