梁贵生 發表於 2025-8-26 22:28:00

C语言之文件流常用标准库函数

<p>本文总结了在C语言中与文件流相关的标准库函数。</p>

<hr>
<h2 id="文件流常用标准库函数">文件流常用标准库函数</h2>
<p>使用下列文件流相关函数需要包含头文件<code>stdio.h</code>。</p>
<div align="center">
<table>
<thead>
<tr>
<th style="text-align: left"></th>
<th style="text-align: left">函数</th>
<th style="text-align: left">作用</th>
<th style="text-align: left">注意事项</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left" rowspan="2">打开或关闭文件流</td>
<td style="text-align: left"><code>fopen</code></td>
<td style="text-align: left">打开文件,返回指向FILE的指针</td>
<td style="text-align: left">需要指定模式(如“r”, “w”, “a”等),并处理可能的文件打开错误</td>
</tr>
<tr>
<td style="text-align: left"><code>fclose</code></td>
<td style="text-align: left">关闭文件流,释放流资源</td>
<td style="text-align: left">确保每个打开的文件流最终都被关闭,避免资源泄露</td>
</tr>
<tr>
<td style="text-align: left" rowspan="2">读写二进制文件流</td>
<td style="text-align: left"><code>fread</code></td>
<td style="text-align: left">从文件流中读取数据</td>
<td style="text-align: left">需要检查返回值以确定读取的数据量和是否遇到错误或EOF</td>
</tr>
<tr>
<td style="text-align: left"><code>fwrite</code></td>
<td style="text-align: left">向文件流中写入数据</td>
<td style="text-align: left">需要检查返回值以确保数据正确写入</td>
</tr>
<tr>
<td style="text-align: left" rowspan="2">逐字符读写文本文件流</td>
<td style="text-align: left"><code>fgetc</code></td>
<td style="text-align: left">从文件流中读取下一个字符</td>
<td style="text-align: left">在达到文件末尾或出现错误时返回EOF</td>
</tr>
<tr>
<td style="text-align: left"><code>fputc</code></td>
<td style="text-align: left">将一个字符写入文件流</td>
<td style="text-align: left">返回写入的字符,若出现错误则返回EOF</td>
</tr>
<tr>
<td style="text-align: left" rowspan="2">逐行读写文本文件流</td>
<td style="text-align: left"><code>fgets</code></td>
<td style="text-align: left">从文件流中读取字符串(一行)</td>
<td style="text-align: left">确保正确处理缓冲区长度和行尾字符</td>
</tr>
<tr>
<td style="text-align: left"><code>fputs</code></td>
<td style="text-align: left">将字符串(不包括NUL终止符)写入文件流</td>
<td style="text-align: left">不会自动添加换行符,需手动处理</td>
</tr>
<tr>
<td style="text-align: left" rowspan="2">格式化读写文本文件流</td>
<td style="text-align: left"><code>fscanf</code></td>
<td style="text-align: left">从文件流中格式化读取数据</td>
<td style="text-align: left">与<code>scanf</code>类似,但从文件流读取</td>
</tr>
<tr>
<td style="text-align: left"><code>fprintf</code></td>
<td style="text-align: left">格式化输出到文件流</td>
<td style="text-align: left">类似于<code>printf</code>,但输出到文件流</td>
</tr>
<tr>
<td style="text-align: left" rowspan="2">文件流状态检查</td>
<td style="text-align: left"><code>feof</code></td>
<td style="text-align: left">检查文件流的EOF标志</td>
<td style="text-align: left">通常用于循环读取数据时判断文件是否结束</td>
</tr>
<tr>
<td style="text-align: left"><code>ferror</code></td>
<td style="text-align: left">检查文件流的错误指示器</td>
<td style="text-align: left">用于错误处理和调试</td>
</tr>
<tr>
<td style="text-align: left" rowspan="3">文件定位</td>
<td style="text-align: left"><code>ftell</code></td>
<td style="text-align: left">返回文件流的当前文件位置指示器</td>
<td style="text-align: left">配合<code>fseek</code>可实现文件的随机访问</td>
</tr>
<tr>
<td style="text-align: left"><code>fseek</code></td>
<td style="text-align: left">设置文件流的文件位置指示器</td>
<td style="text-align: left">可用于移动文件指针到特定位置</td>
</tr>
<tr>
<td style="text-align: left"><code>rewind</code></td>
<td style="text-align: left">将文件流的文件位置指示器重置到文件开头</td>
<td style="text-align: left">等同于<code>fseek(stream, 0, SEEK_SET)</code></td>
</tr>
<tr>
<td style="text-align: left">刷新缓冲区</td>
<td style="text-align: left"><code>fflush</code></td>
<td style="text-align: left">刷新输出缓冲区到文件,丢弃输入缓冲区内容</td>
<td style="text-align: left">参数为NULL时,刷新所有打开的文件流</td>
</tr>
</tbody>
</table>
</div><br><br>
来源:https://www.cnblogs.com/neozhuang/p/19059834/c-file-stream-stdlib-func
頁: [1]
查看完整版本: C语言之文件流常用标准库函数