C语言如何读取单行输入的整数并存入整型数组
C语言读取单行输入整数存入整型数组的实现
你给出的参考代码存在逻辑缺陷:仅读取了数组下标为0的第一个元素,剩余数组元素未被赋值,直接访问会读到栈空间的随机垃圾值,无法实现整行输入整数的存储需求。
核心实现逻辑
- C语言中
scanf("%d")读取整数时,会自动跳过空格、制表符、换行等空白分隔符,因此单行内用空格分隔的整数序列,可以直接通过循环依次读取,不需要额外做单行特殊识别。 - 循环遍历数组所有有效下标,将对应元素的地址传入
scanf完成赋值,避免未初始化内存访问问题。 - 遍历数组做读写操作时,严格控制下标范围在
0到数组长度-1之间,防止数组越界。
修正后可直接运行的代码
#include <stdio.h> int main() { int arr[5]; // 循环读取5个整数,依次存入数组对应位置 for (int i = 0; i < 5; i++) { scanf("%d", &arr[i]); } // 遍历打印数组内容,验证存储结果 for (int i = 0; i < 5; i++) { printf("%d\n", arr[i]); } return 0; }
扩展说明
- 如果无法提前确定单行输入的整数个数,不要用固定长度数组:可以先用
fgets读取整行内容到字符缓冲区,再遍历缓冲区逐个解析整数,配合动态内存分配按需扩容数组存储即可。 - 上述固定长度的写法对输入换行不敏感,即使用户输入过程中敲了换行,只要输入的整数总数量和数组长度匹配,就能正确完成存储。
内容的提问来源于stack exchange,提问作者SUD pythonism
相关产品推荐
相关产品推荐

