txt文件中每行有一个四字成语,读取成语到数组,并输出,如何用c语言实现
时间: 2024-03-05 07:52:43 浏览: 21
可以使用C语言中的文件操作函数来实现读取txt文件中的成语并存储到数组中。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LENGTH 20 // 每行最大长度
int main() {
char filename[] = "idioms.txt"; // txt文件名
char line[MAX_LINE_LENGTH]; // 存储每行数据的缓冲区
char *idioms[1000]; // 存储成语的指针数组
int count = 0; // 成语数量计数器
FILE *fp = fopen(filename, "r"); // 打开文件
if (fp == NULL) {
printf("无法打开文件 %s\n", filename);
exit(EXIT_FAILURE);
}
// 逐行读取文件内容
while (fgets(line, MAX_LINE_LENGTH, fp) != NULL) {
line[strcspn(line, "\r\n")] = '\0'; // 去除行末的换行符
idioms[count] = strdup(line); // 存储成语到指针数组中
count++;
}
fclose(fp); // 关闭文件
// 输出成语
for (int i = 0; i < count; i++) {
printf("%s\n", idioms[i]);
}
// 释放内存
for (int i = 0; i < count; i++) {
free(idioms[i]);
}
return 0;
}
```
该程序首先定义了一个文件名和两个数组,然后打开文件并逐行读取文件内容,将每行成语存储到指针数组中,最后输出成语并释放内存。
需要注意的是,由于成语的长度可能不一致,因此需要定义一个合适的缓冲区大小来避免内存溢出。此外,为了避免字符串长度超出预期,可以使用`strcspn()`函数去除行末的换行符。