gpt4 book ai didi

C: 如何让我的程序拒绝长度超过 'y' 或 'n' 的单词?

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:09 24 4
gpt4 key购买 nike

所以下面的代码是一个更大程序的一小部分,它本身工作得很好:

int main(){

char ansr;
scanf("%c", &ansr);


while (ansr != 'y' && ansr != 'n'){

printf("\n\tInvalid answer, Please try again.");
while(getchar() != '\n');
scanf("%c", &ansr);
}

if ( ansr == 'y') {
sleep(1);
printf("\n\tYou've been warned.......\n\n");
sleep(3);
}
else if ( ansr == 'n') {
printf("\n\tGoodbye then.\n\n");
}

return 0;
}

如您所见,用户输入的任何不以 y 或 n 开头的单词都将被拒绝,直到有正确答案为止。我怎样才能包含比字符“y”和“n”长的单词,因为任何以 y 或 n 开头的字符都会给出是或否的结果?

最佳答案

对于这样的用例,不要使用scanf 来读取输入。使用 fgets 逐行读取文本,并根据合理的逻辑处理每一行。

int main()
{
char answer[LINE_LENGTH]; // #define LINE_LENGTH to a sensible value.
while ( fgets(answer, LINE_LENGTH, stdin) != NULL )
{
// Trim the line of the newline character.
int len = strlen(answer);
if ( answer[len-1] == '\n' )
{
answer[len-1] = '\0';
}

if ( strcmp(answer, "y") == 0 ||
strcmp(answer, "n") == 0 )
{
break;
}

printf("\n\tInvalid answer, Please try again.");
}

if ( strcmp(answer, "y") == 0)
{
sleep(1);
printf("\n\tYou've been warned.......\n\n");
sleep(3);
}
else if ( strcmp(answer, "n") == 0 )
{
printf("\n\tGoodbye then.\n\n");
}

return 0;
}

关于C: 如何让我的程序拒绝长度超过 'y' 或 'n' 的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39814080/

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