c语言如何读取文件中的字符串储存至数组

C语言如何读取文件中的字符串

在C语言中,我们可以使用标准库函数fopen()打开一个文件,然后使用fgetc()fgets()fread()等函数逐个字符地读取文件内容,这里我们主要介绍fgetc()fgets()fread()三种方法。

1、使用fgetc()函数读取单个字符

c语言如何读取文件中的字符串储存至数组

fgetc()函数是C语言中最简单的文件读取函数,它可以逐个字符地读取文件内容,下面是一个使用fgetc()函数的示例:

include <stdio.h>
int main() {
    FILE *file;
    char ch;
    file = fopen("example.txt", "r"); // 以只读模式打开文件
    if (file == NULL) {
        printf("无法打开文件
");
        return 1;
    }
    while ((ch = fgetc(file)) != EOF) { // 当读取到文件末尾时,fgetc()会返回EOF
        putchar(ch); // 将读取到的字符输出到屏幕上
    }
    fclose(file); // 关闭文件
    return 0;
}

2、使用fgets()函数读取一行字符串

c语言如何读取文件中的字符串储存至数组

fgets()函数可以一次性读取一行字符串,包括空格和换行符,下面是一个使用fgets()函数的示例:

include <stdio.h>
include <string.h>
int main() {
    FILE *file;
    char buffer[1024];
    char *line;
    int line_number = 0;
    file = fopen("example.txt", "r"); // 以只读模式打开文件
    if (file == NULL) {
        printf("无法打开文件
");
        return 1;
    }
    while ((line = fgets(buffer, sizeof(buffer), file)) != NULL) { // 当读取到文件末尾时,fgets()会返回NULL
        line_number++; // 记录已读取的行数
        printf("%d: %s", line_number, line); // 将读取到的行输出到屏幕上
    }
    fclose(file); // 关闭文件
    return 0;
}

3、使用fread()函数读取指定数量的字符

c语言如何读取文件中的字符串储存至数组

fread()函数可以一次性读取指定数量的字符,下面是一个使用fread()函数的示例:

include <stdio.h>
include <string.h>
int main() {
    FILE *file;
    char buffer[1024];
    int bytesRead;
    int line_number = 0;
    int max_lines = 100; // 每行最多包含100个字符(不包括换行符)
    int total_bytes = max_lines * sizeof(buffer); // 总字节数等于每行字符数乘以每个字符的字节数(假设每个字符占用1字节)
    file = fopen("example.txt", "r"); // 以只读模式打开文件
    if (file == NULL) {
        printf("无法打开文件
");
        return 1;
    }
    memset(buffer, '\0', sizeof(buffer)); // 将缓冲区清零,以便存储读取到的字符串
    while ((bytesRead = fread(buffer, sizeof(char), total_bytes, file)) > 0) { // 当读取到文件末尾时,fread()会返回0或负数(表示错误)
        line_number++; // 记录已读取的行数,注意要加1,因为最后一行可能没有换行符,所以需要特殊处理
        buffer[bytesRead] = '\0'; // 在缓冲区的末尾添加字符串结束符('\0')以表示字符串结束位置(不包括换行符)
        printf("%d: %s", line_number, buffer); // 将读取到的行输出到屏幕上,注意要加上字符串结束符('\0')以避免潜在的安全问题(如缓冲区溢出)
    }
    fclose(file); // 关闭文件(如果没有发生错误)或忽略错误(如果发生错误)并继续执行后续代码(例如使用errno设置错误标志)-> 这里我们选择关闭文件以释放资源并防止死锁等竞态条件) -> 如果发生错误,请确保在程序结束前正确处理错误(例如使用exit(EXIT_FAILURE)退出程序或调用abort()终止程序等) -> 注意:在某些情况下,您可能希望在发生错误时继续执行后续代码,例如在调试过程中或在不需要完全终止程序的情况下,在这种情况下,请确保在程序结束前正确处理错误。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/271533.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年1月28日 07:20
下一篇 2024年1月28日 07:24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入