卖萌的海豚 · 【转】C语言中 -> 是什么意思?_c语言 ->· 2 周前 · |
傲视众生的玉米 · C++ . -> :: ...· 2 周前 · |
霸气的小虾米 · 赣南,激荡奋斗的豪情(逐梦)· 3 月前 · |
时尚的胡萝卜 · 国务院食安办等五部门联合部署校园食品安全排查 ...· 4 月前 · |
风度翩翩的登山鞋 · 用正则表达式读取文件的第二列数据 - CSDN文库· 5 月前 · |
纯真的圣诞树 · 北京:严禁违规参加老乡会、校友会、战友会-- ...· 7 月前 · |
私奔的帽子 · vue中v-model如何绑定多循环表达式实 ...· 1 年前 · |
会开车的小马驹
4 月前 |
在C程序中,可以使用以下步骤将文件的每一行放入一个数组中:
fopen
函数打开要读取的文件。例如,
FILE* file = fopen("filename.txt", "r");
将打开名为
filename.txt
的文本文件,并以只读模式打开。
if
语句检查文件是否成功打开。如果文件打开失败,可以使用
perror
函数打印错误信息并进行错误处理。
fgets
函数逐行读取文件内容。
fgets
函数的第一个参数是一个字符数组,用于存储读取的行,第二个参数是数组的大小,第三个参数是文件指针。例如,
char line[256]; fgets(line, sizeof(line), file);
将读取文件中的一行并将其存储在
line
数组中。
malloc
函数动态分配内存来创建动态数组。例如,
char** lines = malloc(sizeof(char*) * num_lines);
将创建一个指向字符指针的数组,用于存储每一行。
while
或
for
循环)连续读取文件的每一行,并将其存储在数组中。在每次读取行后,可以使用
strcpy
函数将行复制到动态数组中的相应位置。例如,
lines[i] = malloc(strlen(line) + 1); strcpy(lines[i], line);
将复制读取的行到动态数组中的第
i
个位置。
fclose
函数关闭文件。例如,
fclose(file);
将关闭之前打开的文件。
完整的示例代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
FILE* file = fopen("filename.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
char line[256];
int num_lines = 0;
while (fgets(line, sizeof(line), file)) {
num_lines++;
rewind(file); // 将文件指针重置到文件开头
char** lines = malloc(sizeof(char*) * num_lines);
if (lines == NULL) {
perror("Error allocating memory");
fclose(file);
return 1;
int i = 0;
while (fgets(line, sizeof(line), file)) {
lines[i] = malloc(strlen(line) + 1);
strcpy(lines[i], line);
fclose(file);
// 使用存储的每一行进行后续操作
// 释放动态分配的内存
for (int j = 0; j < num_lines; j++) {
free(lines[j]);
free(lines);
return 0;
}
这个程序将打开名为
filename.txt
的文件,并将文件的每一行存储在动态数组
lines
中。你可以根据需要修改文件名和数组的大小。记得在程序结束时释放动态分配的内存,以避免内存泄漏。