C语言读取数组
时间: 2025-05-06 09:55:34 浏览: 25
### 实现C语言数组读取
在C语言中,可以通过多种方式来读取数组的内容。对于简单的固定大小的数组,可以使用循环结构配合`scanf()`函数逐个元素输入;而对于变长数组,则可以在运行时动态获取数组尺寸并分配相应空间。
#### 固定大小数组读取实例
当已知数组大小时,可以直接声明具有特定长度的数组,并通过for循环遍历每一个索引来接收用户输入的数据:
```c
#include <stdio.h>
int main() {
int numbers[5]; // 定义一个含有五个整型数值的数组
printf("请输入5个整数:\n");
for(int i = 0; i < 5; ++i){
printf("numbers[%d] =", i);
scanf("%d", &numbers[i]);
}
}
```
此段代码展示了如何创建一个名为`numbers`的整形数组,并提示用户依次输入5个整数值给该数组[^1]。
#### 变长数组读取实例
如果希望让用户决定数组的具体规模,在现代标准下允许定义VLA(Variable Length Array),即变量长度数组。这使得可以根据用户的输入即时调整数组的空间需求:
```c
#include <stdio.h>
#define MAX_SIZE 100 // 设置最大可能的数组容量以防溢出
int main(){
size_t n;
double data[MAX_SIZE];
printf("你想存储多少个浮点数?\n");
scanf("%zu",&n);
if(n>MAX_SIZE || n<=0){
puts("超出范围或非法输入!");
return -1;
}
printf("现在请按顺序输入这些数字...\n");
for(size_t i=0;i<n;++i){
printf("data[%zu]=",i);
scanf("%lf",&data[i]);
}
}
```
上述例子先询问用户想要保存多少个双精度实数,之后再依据给出的数量构建相应的数组用于储存数据。这里还加入了基本的安全检查机制以防止越界访问[^3]。
#### 使用指针数组进行字符串读取
除了处理单一类型的简单数组外,还可以利用指针数组管理一组字符序列或者更复杂的数据结构。比如下面的例子演示了怎样借助于指向char类型的指针构成的数组来进行多行文本录入:
```c
#include <stdio.h>
#include <string.h>
#define ROWS 4
#define COLS 80
int main(void) {
char *lines[ROWS];
lines[0]="First line";
lines[1]=(char*)malloc(COLS*sizeof(char));
strcpy(lines[1],"Second line allocated dynamically.");
lines[2]="Third line.";
lines[3]=NULL;
for (int row = 0; row<ROWS && lines[row]!= NULL; ++row)
printf("%s\n", lines[row]);
free(lines[1]); /*释放之前申请过的堆内存*/
return 0;
}
```
这段程序片段不仅体现了静态初始化的方式,同时也包含了动态分配内存的技术要点以及必要的资源清理工作。
阅读全文
相关推荐


















