gpt4 book ai didi

C 未初始化局部变量错误

转载 作者:行者123 更新时间:2023-11-30 15:37:44 33 4
gpt4 key购买 nike

C 语言新手,仍在学习中。该程序应该第一次启动,不需要被要求做任何事情。然后它提示用户“Y/N”继续。我保留了错误,谁能告诉我为什么它不起作用,我不知道如何处理从中得到的错误。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>

void theQnA(char charIn);


int main(void)
{
int answerint = 0;
char charIn;
char anwser;


printf("Enter a character to be examined: ");
scanf("%c", &charIn);
theQnA(charIn);
while (answerint == 0)
{
printf("Would you like to run it again? Y/N\n");
scanf("%c", &anwser);

if (anwser == 'y')
{
printf("Enter in another character buddy\n");
scanf("%c", &charIn);
theQnA(charIn);
}
else (anwser != 'y')
{
answerint = (answerint--);
}
}
printf("Goodbye\n");

return 0;
}


void theQnA(char charIn)
{
if (islower(charIn))
printf("You have entered in a lower case letter dude\n");
else if (isdigit(charIn))
printf("You enterd in a num man\n");
else if (isupper(charIn))
printf("Its upper case man\n");
else if (ispunct(charIn))
printf("You entered in a punctuation!\n");
else if (isspace(charIn))
printf("You enterd in a whitespace dude\n");
else
printf("control char/n");
return;
}

最佳答案

你有else (anwser != 'y')。应该是 else if (anwser != 'y'),或者更好,只是 else。提示您想再次运行吗?由于循环的结构,Y/N 也会被打印两次。您有很多错误,但这里有一些关于您的循环的建议。

您可以在 while 条件中使用 anwser 变量。 answerint 是不必要的。此外,当您键入字符并按 Enter 键时,scanf(使用 %c)将提取该字符,但将换行符保留在缓冲区中。这意味着对 scanf 的下一次调用将返回一个换行符,这将使您的程序看起来好像正在跳过输入语句。要解决此问题,请在调用中的 %c 之前添加一个空格:

scanf(" %c", &charIn);

你的逻辑也有点不合时宜。看看这个例子的结构。

printf("Enter a character to be examined: ");
scanf(" %c", &charIn);
theQnA(charIn);

printf("Would you like to run it again? y/n\n");
scanf(" %c", &anwser);
while (anwser == 'y')
{
printf("Enter in another character buddy: ");
scanf(" %c", &charIn);
theQnA(charIn);

printf("Would you like to run it again? y/n\n");
scanf(" %c", &anwser);
}

关于C 未初始化局部变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107319/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com