【发布时间】:2013-11-12 12:45:06
【问题描述】:
在我的输出中一切都很好,除了它需要一个 NULL 字符是正确的,错误是在 for 循环检查数组 *ans[]={"zero","one","two"}; 和 inp 之间的条件之后:@ 的最后一个数字987654323@ 是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();
}
【问题讨论】:
-
不要使用
gets函数,它已经被弃用了很长时间。请改用fgets。 -
好吧好吧。在这里(并停止使用
gets()):while(sel == ans_cnt);