📜  C++ fscanf()(1)

📅  最后修改于: 2023-12-03 15:29:49.445000             🧑  作者: Mango

C++ fscanf()

fscanf()函数是C库中的成员函数,用于从文件中读取格式化数据。它类似于scanf(),但前者不会从标准输入设备(例如键盘)读取数据,而是从指定文件中读取数据。

语法

以下是fscanf()函数的语法:

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

参数解释:

  • stream:指向 FILE 对象的指针,该对象标识将要读取的流。
  • format:一个字符字符串,包含零个或多个的由百分号(%)字符开始的转换规范。
  • :可变长度参数列表。
函数返回值

fscanf()函数返回成功读取的值的个数,如果有任何错误或未读取任何值,则返回EOF。

使用示例

以下示例将从名为“test.txt”的文本文件中读取3个double类型的数字,并将它们存储在数组num中。

#include <stdio.h>

int main() {
    FILE* fp;
    double num[3];
    int ret;

    fp = fopen("test.txt", "r");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }

    //读取3个double类型的数字
    ret = fscanf(fp, "%lf %lf %lf", &num[0], &num[1], &num[2]);
    if (ret != 3) {
        printf("Failed to read data from file\n");
        return 1;
    }

    //输出读取的数字
    printf("Read data from file:\n");
    printf("%.2lf %.2lf %.2lf\n", num[0], num[1], num[2]);

    fclose(fp);
    return 0;    
}
返回markdown格式
# C++ fscanf()

`fscanf()`函数是C库中的成员函数,用于从文件中读取格式化数据。它类似于`scanf()`,但前者不会从标准输入设备(例如键盘)读取数据,而是从指定文件中读取数据。

## 语法

以下是`fscanf()`函数的语法:

```c++
int fscanf(FILE *restrict stream, const char *restrict format, ...);

参数解释:

  • stream:指向 FILE 对象的指针,该对象标识将要读取的流。
  • format:一个字符字符串,包含零个或多个的由百分号(%)字符开始的转换规范。
  • :可变长度参数列表。
函数返回值

fscanf()函数返回成功读取的值的个数,如果有任何错误或未读取任何值,则返回EOF。

使用示例

以下示例将从名为“test.txt”的文本文件中读取3个double类型的数字,并将它们存储在数组num中。

#include <stdio.h>

int main() {
    FILE* fp;
    double num[3];
    int ret;

    fp = fopen("test.txt", "r");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }

    //读取3个double类型的数字
    ret = fscanf(fp, "%lf %lf %lf", &num[0], &num[1], &num[2]);
    if (ret != 3) {
        printf("Failed to read data from file\n");
        return 1;
    }

    //输出读取的数字
    printf("Read data from file:\n");
    printf("%.2lf %.2lf %.2lf\n", num[0], num[1], num[2]);

    fclose(fp);
    return 0;    
}

以上代码将输出以下内容:

Read data from file:
1.50 2.00 3.14