用c语言将文件多行内容写入顺序表
时间: 2023-11-27 07:53:14 浏览: 77
利用C语言实现顺序表的实例操作
5星 · 资源好评率100%
要将文件多行内容写入顺序表,可以按照以下步骤:
1. 定义一个结构体来表示顺序表中的元素,例如:
```c
typedef struct {
char *line; // 一行文本内容
} Element;
```
2. 定义顺序表结构体,包含元素数组和当前元素数量等信息,例如:
```c
#define MAX_LINES 1000
typedef struct {
Element elements[MAX_LINES]; // 元素数组
int size; // 当前元素数量
} SeqList;
```
3. 打开文件并逐行读取文本内容,将每行文本内容作为一个元素存入顺序表中,例如:
```c
SeqList list;
list.size = 0;
FILE *fp = fopen("filename.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return;
}
char buffer[1024];
while (fgets(buffer, 1024, fp) != NULL) {
if (list.size >= MAX_LINES) {
printf("Exceeds maximum number of lines.\n");
break;
}
Element *e = &list.elements[list.size];
e->line = malloc(strlen(buffer) + 1);
strcpy(e->line, buffer);
list.size++;
}
fclose(fp);
```
4. 处理完文件内容后,记得释放每个元素的内存:
```c
for (int i = 0; i < list.size; i++) {
free(list.elements[i].line);
}
```
完整的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char *line; // 一行文本内容
} Element;
#define MAX_LINES 1000
typedef struct {
Element elements[MAX_LINES]; // 元素数组
int size; // 当前元素数量
} SeqList;
int main() {
SeqList list;
list.size = 0;
FILE *fp = fopen("filename.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
char buffer[1024];
while (fgets(buffer, 1024, fp) != NULL) {
if (list.size >= MAX_LINES) {
printf("Exceeds maximum number of lines.\n");
break;
}
Element *e = &list.elements[list.size];
e->line = malloc(strlen(buffer) + 1);
strcpy(e->line, buffer);
list.size++;
}
fclose(fp);
// 输出顺序表内容
for (int i = 0; i < list.size; i++) {
printf("%d: %s", i+1, list.elements[i].line);
}
// 释放内存
for (int i = 0; i < list.size; i++) {
free(list.elements[i].line);
}
return 0;
}
```
阅读全文