繁体   English   中英

为什么 do while 循环在这里不能正常工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM