如果我要读取的文件当中有n行,n已知,每行只有一个数,要读取他们到一个数组当中应该怎么办。
时间: 2024-11-09 08:31:06 浏览: 12
0920020009.rar_Matlab 卫星_matlab卫星坐标_matlab读取O文件_测站坐标_读取 N O文件
5星 · 资源好评率100%
如果你想一次性读取已知行数且每行只有一个数值到一个数组中,可以使用C语言的动态内存分配以及循环结构。以下是一个基本的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define NUM_LINES n // 假设n是你已知的行数
int main() {
int n;
scanf("%d", &n); // 输入总行数
if (n <= 0) {
printf("Invalid number of lines.\n");
return 1;
}
// 动态分配内存存储数据
int *data = (int*) malloc(n * sizeof(int));
if (data == NULL) {
perror("Memory allocation failed.");
return 1;
}
int lineNumber = 0;
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Opening file failed.");
free(data);
return 1;
}
while (getline(&data[lineNumber], &n, file) != -1) { // getline()函数用于读一行
lineNumber++;
// 确保每行只读取一个数字
if (sscanf(data[lineNumber - 1], "%d", &data[lineNumber]) != 1) {
fprintf(stderr, "Line %d is not a valid number.\n", lineNumber);
continue;
}
}
fclose(file);
// 输出或进一步操作数组中的数据
for (int i = 0; i < n; i++) {
printf("Element at index %d: %d\n", i, data[i]);
}
// 释放内存
free(data);
return 0;
}
```
在这个例子中,我们使用了`getline()`函数来同时读取一行并将其存储在`data`数组内。`sscanf()`用于检查是否能解析成一个整数。
阅读全文