fscanf & fprintf

本文深入探讨了C语言中fscanf和fprintf函数的使用方法,通过一个简单的示例程序展示了如何从标准输入读取字符,并将字符输出到标准输出设备。此程序利用了fscanf函数的格式化输入功能和fprintf函数的格式化输出能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fscanf & fprintf

#include<stdio.h>
#include<stdlib.h>
void waiter(FILE *input, FILE *output);
int main(){
    waiter(stdin, stdout);
    return EXIT_SUCCESS;
}

void waiter(FILE *input, FILE *output){
    char contents = 0;
    int i;
    while((i = fscanf(input, "%c", &contents)) != EOF){
        fprintf(output, "U have ordered %c.\n", contents);
    }
}```

### C语言中 `fscanf` 与 `fprintf` 的功能和使用场景 #### 功能描述 `fscanf` 和 `fprintf` 都属于 C 标准库 `&lt;stdio.h&gt;` 中的函数,主要用于处理文件输入/输出操作。 - **`fscanf`**: 这是一个从指定文件流中读取数据并按照给定格式存储到变量中的函数。其返回值表示成功匹配并赋值的项数[^1]。 ```c int fscanf(FILE *stream, const char *format, ...); ``` - **`fprintf`**: 它的功能是从一系列参数中获取数据,并将其按指定格式写入到指定的文件流中。它的行为类似于 `printf`,只不过目标不是标准输出而是某个文件流[^2]。 ```c int fprintf(FILE *stream, const char *format, ...); ``` #### 使用场景对比 | 特性 | `fscanf` | `fprintf` | |-----------------|-----------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------| | 主要用途 | 用于从文件或其他输入源读取结构化数据 | 将格式化的字符串写入文件或其他输出目的地 | | 数据流向 | 输入方向(从外部资源到内存) | 输出方向(从内存到外部资源) | | 返回值 | 成功读取的数据项数量;如果到达文件末尾或者发生错误,则可能返回EOF | 写入字符的数量;如果失败则返回负值 | #### 示例代码展示 以下是两个函数的具体应用实例: ##### 使用 `fscanf` 读取文件内容 ```c #include &lt;stdio.h&gt; int main() { FILE *fp; int age; float height; char name[50]; // 打开文件 fp = fopen(&quot;data.txt&quot;, &quot;r&quot;); if (fp == NULL) { perror(&quot;Error opening file&quot;); return -1; } // 循环读取每一行直到结束 while (fscanf(fp, &quot;%s %d %f&quot;, name, &amp;age, &amp;height) != EOF) { printf(&quot;Name: %s, Age: %d, Height: %.2f\n&quot;, name, age, height); } fclose(fp); return 0; } ``` ##### 使用 `fprintf` 向文件写入内容 ```c #include &lt;stdio.h&gt; int main() { FILE *fp; // 创建新文件或覆盖已有文件 fp = fopen(&quot;output.txt&quot;, &quot;w+&quot;); if (fp == NULL) { perror(&quot;Error creating file&quot;); return -1; } // 写入一些测试数据 fprintf(fp, &quot;Alice 30 170.5\n&quot;); fprintf(fp, &quot;Bob 25 180.0\n&quot;); fclose(fp); return 0; } ``` #### 区别总结 尽管两者都涉及到了文件指针以及格式控制符的概念,但是它们的作用完全相反:一个是负责把外界的信息导入内部供程序分析利用;另一个则是将计算结果或者其他信息导出保存起来以便后续查看或者进一步加工[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值