|
本帖最后由 rosynirvana 于 2014-9-1 13:09 编辑
- /*
- @忘记 论坛ID:gaoyukonga
- 这段代码讲解了如何正确的读入范围内的字符串
- 并且直接有效的干掉了我所知道的错误
- 错误 如:
- 缓冲区遗留
- 数组越界等问题
- 综合进行了下处理 这样有效的处理了在做 登陆 的时候的输入问题
- 请详细看!
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main()
- {
- //我们本次就只读入10个长度的字符串来实例
- //可能要问我为什么要写12的下标 稍后讲解这个
- char buf[12] = { };
- printf("请输入字符串:\n");
- //fgets是一个相对安全的函数 他只会从缓冲区读取你指定字节的字符串
- fgets(buf, sizeof(buf), stdin);
- //现在开始对字符串读入是否成功进行判断
- /*
- 因为fgets 会把'\n' 也一并读入
- 并且字符串结尾是'\0'
- 所以毫无疑问如果我们10个长度那么
- buf里面肯定包括 '\n' 和 '\0'
- 如果输入的长度超过10后 那么'\n'肯定是读不进来的
- 所以这里我们只需要去找'\n'
- */
- int i,res = 0;
- for(i = 0; i<= 11; i++) {
- if(buf[i] == '\n') {
- res = 1;
- break;
- }
- }
- if(res == 1) printf("输入正确\n%s",buf);
- else printf("输入出错!字符串长度不在范围内\n");
- //好了 这样就干掉了输入越界的问题了
- system("pause");
- return 0;
- }
- //当然 如果你要做为循环的话 因为读入的字节还有遗留在缓冲区的记得清空
- //可以用
- //fflush(stdin);
- //scanf("%*[^\n]"); scanf("%*c");
- //进行清空!!!
- //记得给分哦!!![i]
复制代码 |
|