c语言怎么从文件中读取数据的结构数组中,举个例子
时间: 2023-03-09 16:26:45 浏览: 133
可以使用fread函数,例如:int arr[20];
FILE* fp = fopen("file.dat", "rb");
fread(arr, sizeof(int), 20, fp);
fclose(fp);
相关问题
c语言怎么读取wav文件 并存 到 数组中,能 举个例子嘛
好的,可以的。以下是一个简单的C语言程序,用于读取.wav文件并将其存储到数组中:
```c
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 1024
int main() {
FILE *fp;
fp = fopen("example.wav", "rb"); // 打开.wav文件
if (fp == NULL) {
printf("无法打开文件\n");
return 1;
}
// 读取文件头
char header[44]; // .wav文件头长度为44字节
fread(header, sizeof(char), 44, fp);
// 获取音频数据的大小
int data_size;
fseek(fp, 0, SEEK_END);
data_size = ftell(fp) - 44; // 文件大小减去头部长度
// 读取音频数据
short *data = (short *)malloc(data_size);
fseek(fp, 44, SEEK_SET);
fread(data, sizeof(short), data_size / 2, fp); // 音频数据为16bit(short),每个样本占2个字节
// 输出音频数据
for (int i = 0; i < data_size / 2; i++) { // 使用data_size / 2是因为一个样本占2个字节
printf("%d ", data[i]);
}
// 关闭文件
fclose(fp);
free(data);
return 0;
}
```
在这个程序中,我们使用了标准C库中的fopen()、fread()、fseek()和ftell()等函数来读取.wav文件并获取音频数据。为了方便,我们将音频数据存储在了一个short类型的数组中,并输出了数组中的所有元素。请注意,这个程序只能读取16位编码格式的.wav文件,如果.wav文件使用其他编码格式,可能会出现错误。
c语言按行读取文件到数组中
可以使用C语言中的fgets函数按行读取文件,并将每一行存储到数组中。具体步骤如下:
1. 定义一个字符数组指针,用于存储读取到的字符串。
2. 定义一个整数变量,用于记录读取的行数。
3. 打开文件,并使用fgets函数按行读取文件,并将每一行存储到数组中。
4. 关闭文件。
下面是一个例子,演示如何按行读取文件到数组中:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LINES 1000
#define MAX_LENGTH 100
int main() {
FILE *fp;
char *lines[MAX_LINES];
char str[MAX_LENGTH];
int num_lines = 0;
fp = fopen("test.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
while (fgets(str, sizeof(str), fp) != NULL) {
lines[num_lines] = malloc(strlen(str) + 1);
strcpy(lines[num_lines], str);
num_lines++;
}
fclose(fp);
// 打印读取到的字符串
for (int i = 0; i < num_lines; i++) {
printf("%s", lines[i]);
}
// 释放动态分配的内存
for (int i = 0; i < num_lines; i++) {
free(lines[i]);
}
return 0;
}
```
在这个例子中,我们定义了一个字符数组指针lines,用于存储读取到的字符串。同时,我们定义了一个整数变量num_lines,用于记录读取的行数。在while循环中,我们使用fgets函数按行读取文件,并将每一行存储到数组中。需要注意的是,我们使用了动态内存分配函数malloc来分配存储每一行字符串的内存空间。
最后,我们打印读取到的字符串,并释放动态分配的内存。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)