【发布时间】:2021-05-29 03:45:20
【问题描述】:
#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 终止”。 Here it is.有时它的行为完全不同。 See here.应该怎么做才能得到想要的结果?
【问题讨论】:
-
这将有助于解决您的第二个问题stackoverflow.com/questions/29775323/…
-
更改
scanf("%s",&answer);-->scanf("%s",answer);geeksforgeeks.org/not-used-strings-scanf-function -
在这些更改之后,无法重现段错误(除非您对输入进行模糊测试,否则看不到这是如何发生的)。
-
if(letter>='A' && letter<='Z')更具可读性。
标签: c