有一个包含1000个着有空格分隔的0~255整数的文件,用fread将整数读出依次存放到char数组中
时间: 2024-04-30 19:23:34 浏览: 62
将数组写入文件,读取文件到数组
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
char *buffer;
long file_size;
fp = fopen("data.txt", "rb"); // 打开文件,以二进制模式读取
if (fp == NULL) {
perror("Error opening file");
return EXIT_FAILURE;
}
// 获取文件大小
fseek(fp, 0, SEEK_END);
file_size = ftell(fp);
rewind(fp);
// 分配足够大小的内存
buffer = (char *) malloc(file_size);
if (buffer == NULL) {
perror("Error allocating memory");
return EXIT_FAILURE;
}
// 读取文件到内存中
fread(buffer, 1, file_size, fp);
// 将整数读出依次存放到char数组中
int num_count = 0;
char num_str[4]; // 整数转成字符串后最多3位数字,再加一个\0
for (int i = 0; i < file_size; i++) {
if (buffer[i] == ' ') {
num_str[num_count] = '\0'; // 添加字符串结束符
int num = atoi(num_str); // 将字符串转成整数
printf("%d\n", num); // 输出整数
num_count = 0; // 重置num_str计数器
} else {
num_str[num_count++] = buffer[i];
}
}
// 释放内存并关闭文件
free(buffer);
fclose(fp);
return EXIT_SUCCESS;
}
```
假设数据文件名为`data.txt`,文件中的整数之间用空格分隔。程序将读取整个文件到内存中,然后遍历内存中的字符数组,将整数依次读取出来并输出。注意,该程序没有对文件中的整数数量做任何假设,因此如果文件中的整数数量不是1000个,程序也能正确地输出所有整数。
阅读全文