gpt4 book ai didi

c - For循环执行C中的条件限制

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:56 25 4
gpt4 key购买 nike

在我的输出中一切都很好,除了它需要一个 NULL 字符是正确的,错误的是在 for 循环检查数组 *ans[]={"zero","之间的条件之后one","two"};inp :sel 的最后一个数字是 2 并且我的条件仍然正确它执行 sel++ 这使得 sel = 3 这是我的限制,导致 NULL 输入被接受。 我如何限制 sel 在我的 for 循环中执行它的限制?

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main(){
char inp[256]={0},
*ans[]={"zero","one","two"};
int sel,
ans_cnt=sizeof(ans)/sizeof(ans[0]); // Equals to 3
do{
clrscr();
printf("Enter Any:\n\"zero\" or \n\"one\" or \n\"three\": ");
gets(inp);
for(sel=0;sel<ans_cnt && strcmp(inp,ans[sel]);sel++);
}
while(strcmp(inp,ans[sel]));
printf("Valid Answer!");
getch();
}

最佳答案

问题在于,如果在内部 for 循环中找不到字符串,则 sel 将为 3。这会导致以下 while 条件中的 ans 被索引出界。

这可以通过更改 while 条件来解决:

while (sel == ans_cnt);

关于c - For循环执行C中的条件限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19724686/

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