Cla*_*ohn 1 c printf ascii char atoi
我正在制作一个简单的程序,要求用户提供最小值和最大值(介于32和127之间),但由于某些原因,每次我尝试存储最小值时,它都被另一个值替换.
这是代码:
#include <stdlib.h>
#include <stdio.h>
#define lenLimit 256
char text[lenLimit];
int enterNumber(int loLimit, int hiLimit) {
printf("Please enter an integer between 32 and 127: ");
fgets(text, lenLimit, stdin);
int enter = atoi(text);
int exit;
if (enter < 32 || enter > 127) {
printf("Min %i OUT OF range\n", enter);
enterNumber(enter, hiLimit);
}
if (enter >= 32 && enter <= 127 && hiLimit > 127) {
exit = atoi(text);
printf("Min %i IN range\n", exit);
}
if (loLimit >= 32 && loLimit <= 127 && hiLimit <= 127 && enter >= loLimit) {
exit = hiLimit;
printf("Max %i IN range\n", exit);
}
printf("num returned: %i\n", exit); //prints twice, why?
return exit;
}
void printTable(int loLimit, int hiLimit) {
for (int i = loLimit; i <= hiLimit; i++) {
printf("ASCII character%3d is %c.\n", i, i);
}
}
int main(int argc, char* argv[]) {
int min = enterNumber(31,128);
printf("Min: %i\n", min);
int max = enterNumber(min, 128);
printf("Max: %i\n", max);
printTable(min, max);
return(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
这是结果:
Please enter an integer between 32 and 127: 31
Min 31 OUT OF range
Please enter an integer between 32 and 127: 33
Min 33 IN range
num returned: 33
num returned: 1600375832
Min: 1600375832
Please enter an integer between 32 and 127: 45
Min 45 IN range
num returned: 45
Max: 45
Run Code Online (Sandbox Code Playgroud)
您enterNumber在其中一个条件中自行调用,结果是您要丢弃.然后你输出的是一个整数值exit.(在C中使用未初始化的变量是未定义的行为).
避免这样的事情的递归,改为使用循环.
| 归档时间: |
|
| 查看次数: |
693 次 |
| 最近记录: |