我在下面放了一个小函数来检查用户类型是哪个字符。'y'和'n'工作得很好,但我有点困惑,为什么我的c代码重复两次,然后允许我再次键入,当我输入一个不同的字符,我把我的默认语句。
int any_size_array () {
int a=19;
int numb_array [] = {a,22,13,132,153,600};
printf("do you want to add more numbers to the array?t");
char user;
scanf("%c", &user);
switch(user) {
case 'y':
printf("user typed %cn", user);
break;
case 'n':
printf("user typed %cn", user);
break;
default:
printf("please try againn");
any_size_array();
}
因为n
是一个字符,而%c
不使用它。如果您想跳过空白,请尝试scanf(" %c", &user)
。
同样,您必须总是检查scanf返回的值。如果scanf
没有修改user
的值,那么您的程序通过尝试从未初始化的变量中读取来调用未定义行为。试一试:
if( scanf(" %c", &user) == 1 ) { ... }
-
不要使用递归。每次调用
any_size_array()
函数时,所有变量都会重新创建,并且不相关。使用循环。 -
您输入的字符比输入的字符多。(以新行为例)