我们假设有人在写一些文字。我的程序必须扫描该文本,然后在彼此之间打印所有字符。但是,它仅应读取输入,直到*出现。因此,当输入为“ 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;
}
您可以切换scanf
和printf
语句,并在循环前放置一个初始的scanf
:
int main()
{
char c1;
scanf("%c", &c1);
while (c1 != '*') {
printf("c1: %c \n", c1);
scanf("%c", &c1);
}
return 0;
}
还请注意,由于您的程序当前正在打印*
,因此不仅存在问题,而且由于c1
在首次运行c1 != '*'
时未初始化,因此它是未定义的行为。
您应该看getchar()
#include <stdio.h>
int main()
{
char c1;
while ((c1=getchar())!='*'){
printf("c1: %c \n", c1);
}
return 0;
}