C语言实现文件读取 - mygetline 函数详解
- #include <stdio.h>\、#include <stdlib.h>\ 和 #include <string.h>\ 包含头文件,用于输入输出操作\、动态内存分配和字符串处理。\n2. #define LINE_SIZE 120 定义宏 LINE_SIZE 为 120,表示每行最大字符数。\n3. int mygetline(char **line, size_t *n, FILE *fp) 定义函数 mygetline,用于从文件中读取一行数据。函数参数包括指向指针的指针 line,用于存储读取的数据;指向 size_t 类型的指针 n,表示 line 的大小;FILE 指针 fp,表示要读取的文件。函数返回值为读取的字符数或 EOF。\n4. 在 mygetline 函数中,首先判断 line 是否为 NULL,如果是,则通过 malloc 函数分配内存,并将 n 指向 LINE_SIZE。然后使用一个循环,不断从文件中读取字符,直到遇到 EOF 或换行符。在循环中,将读取的字符存储到 line 指向的内存中,并判断是否遇到换行符,如果是,则在 line 中添加字符串结束符 '\0',并返回读取的字符数。如果 line 的大小不足以存储读取的字符,就通过 realloc 函数扩展 line 的大小。最后,如果遇到 EOF,返回 EOF。\n5. 在主函数 main 中,首先通过 fopen 函数打开命令行参数中指定的文件,如果打开失败,则输出错误信息并返回 -1。然后定义变量 ret 为 0,用于记录 mygetline 函数的返回值。定义指针 line 和变量 n,用于存储读取的数据和 line 的大小。接下来使用一个循环,不断调用 mygetline 函数读取文件中的每一行数据,直到遇到 EOF。在循环中,将读取的数据输出到屏幕上。最后,释放 line 指向的内存,关闭文件,并返回 0。
原文地址: https://www.cveoy.top/t/topic/pO6j 著作权归作者所有。请勿转载和采集!