[英]Why the do while loop is not working properly here?
#include<stdio.h>
#include<string.h>
int main()
{
char letter;
char answer[10];
char affirmation[10] = "yes";
do
{
printf("Enter a character: \n");
scanf("%c",&letter);
if(letter>=65 && letter<=90)
{
printf("UPPERCASE! \n");
}
else if(letter>=97 && letter<=122)
{
printf("LOWERCASE \n");
}
else
{
printf("Not an Alphabet \n");
}
printf("Wanna try for another Character ? [yes/no] \n");
scanf("%s",&answer);
}
while(strcmp(affirmation,answer) == 0);
return 0;
}
我试图制作一个程序来判断输入的字符是大写还是小写,然后询问用户是否想再试一次另一个字符。 但它并没有以期望的方式重复。有时它说“以信号 11 终止”。 这里是。 有时它的行为完全不同。 看这里。 应该怎么做才能得到想要的结果?
您应该在scanf(" %c",&letter);
中的 %c 之前包含一个空格 . 需要 %c 之前的空格来跳过缓冲区 memory 中的空白。 看看这篇文章了解更多信息。 https://www.codesdope.com/discussion/why-are-you-using-a-space-before-c-in-scanf-c-ch/ 。 那么你也应该改变scanf("%s",&answer);
到scanf("%s",answer);
因为数组已经是指向其第一个元素的指针。 看看用 scanf 读取字符串。
#include<stdio.h>
#include<string.h>
int main()
{
char letter;
char answer[10];
char affirmation[10] = "yes";
do
{
printf("Enter a character: \n");
scanf(" %c",&letter);
if(letter>=65 && letter<=90)
{
printf("UPPERCASE! \n");
}
else if(letter>=97 && letter<=122)
{
printf("LOWERCASE \n");
}
else
{
printf("Not an Alphabet \n");
}
printf("Wanna try for another Character ? [yes/no] \n");
scanf("%s",answer);
}
while(strcmp(affirmation,answer) == 0);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.