📜  带分隔符的 fscanf (1)

📅  最后修改于: 2023-12-03 14:54:01.998000             🧑  作者: Mango

使用带分隔符的 fscanf

简介

fscanf 是 C 语言标准库中的一个函数,用于从文件中读取指定格式的数据。带分隔符的 fscanf 是 fscanf 的一种扩展,可以使用自定义的分隔符来读取数据。

语法

int fscanf(FILE *stream, const char *format, ...)

参数说明:

  • stream:要读取的文件指针。
  • format:格式控制字符串,指定要读取的数据类型和分隔符。
  • ...:可选参数,为读取到的数据赋值的变量列表。
格式控制字符串

带分隔符的 fscanf 的格式控制字符串有以下两种格式:

  • %[characters]:用于读取一段被指定字符集中的字符。例如,%[0-9] 可以读取数字。
  • %[^characters]:和 %[characters] 类似,但是是排除指定字符集中的字符。例如,%[^,] 可以读取不包含逗号的任意字符序列。
示例代码

下面是一个简单的示例代码,可以从文件中读取逗号分隔的两个整数值,并计算它们的和。

#include <stdio.h>

int main()
{
    FILE *fp;
    int x, y;

    fp = fopen("data.txt", "r");
    if (fp == NULL) {
        fprintf(stderr, "Error: cannot open file\n");
        return 1;
    }

    if (fscanf(fp, "%d,%d", &x, &y) == 2) {
        printf("%d + %d = %d\n", x, y, x + y);
    } else {
        fprintf(stderr, "Error: invalid data format\n");
    }

    fclose(fp);
    return 0;
}

在这个示例代码中,我们使用了 %d 和逗号分隔符来读取两个整数值。如果读取成功,就计算它们的和并输出结果。如果读取失败,就输出错误信息并退出程序。

注意事项
  • 分隔符必须以字符形式出现在格式控制字符串中。
  • %[]%[^] 用法上有所不同,需要注意。