int s_get_int() { char str[100]; int i = 0; fflush(stdin); while ((str[i] = getchar()) != '\n') { if (i == 0 && (str[i] == '+' || str[i] == '-')) { i++; continue; } if (str[i] < '0' || str[i]>'9') { puts("非法输入,请重新输入(数字)"); fflush(stdin); i = 0; continue; } i++; } str[i] = '\0'; return atoi(str); }
时间: 2023-06-16 11:03:59 浏览: 63
C语言的用法
该函数为获取用户输入的整数,通过逐个读取字符并判断是否为数字来实现。
具体实现细节如下:
1. 声明一个字符数组 str,用于存储用户输入的字符串。
2. 初始化 i 为 0。
3. 使用 fflush(stdin) 清空输入缓冲区,防止之前的输入影响本次输入。
4. 使用 while 循环读取每个字符,直到读取到换行符为止。
5. 判断读取到的字符是否为第一个字符,并且是否为正负号,若是则跳过。
6. 判断读取到的字符是否为数字,若不是则提示用户输入非法,并清空数组和 i 的值,重新开始读取。
7. 若读取到的字符为数字,则将其存入数组中,并将 i 的值加 1。
8. 读取完毕后,在数组的末尾加上 '\0',将其转换为整数类型并返回。
需要注意的是,该函数对于非法输入(如输入的字符串中包含非数字字符)会进行错误提示并要求用户重新输入,但对于超出 int 范围的输入值,函数并未进行处理,可能会导致错误的结果。
阅读全文