2024-2025-1 20241319 《计算机基础与程序设计》第十四周学习总结
作业信息
| 这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计 |
|---|---|
| 这个作业要求在哪里 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14 |
| 这个作业的目标 | 《C语言程序设计》第13章 |
| 作业正文 | https://www.cnblogs.com/wchxx/p/18639513 |
**教材学习内容总结
1. 文件的打开与关闭
- 打开文件:使用
fopen()函数打开文件,该函数接受两个参数,文件名和打开模式(如"r"读模式、"w"写模式、"a"追加模式)。如果文件打开失败,返回NULL。FILE* pf = fopen("test.txt", "w"); if (pf == NULL) { perror("fopen"); return 0; } - 关闭文件:使用
fclose()函数关闭文件,释放资源,并确保数据写入磁盘。fclose(pf); pf = NULL;
2. 文件的顺序读写
- 字符读写:
- 读字符:使用
fgetc()函数从文件中读取一个字符。char c = fgetc(fp); - 写字符:使用
fputc()函数将一个字符写入文件。fputc('a', pf);
- 读字符:使用
- 字符串读写:
- 读字符串:使用
fgets()函数读取一行字符串,直到遇到换行符或EOF。char s[1024]; fgets(s, sizeof(s), fp); - 写字符串:使用
fputs()函数写入字符串,不会自动添加换行符。fputs("Hello World\n", pf);
- 读字符串:使用
- 块读写:使用
fread()和fwrite()函数读写数据块。// 写入 fwrite(&data, sizeof(data), 1, pf); // 读取 fread(&data, sizeof(data), 1, pf);
3. 文件的随机读写
- 文件指针移动:使用
fseek()函数移动文件指针到指定位置,基于不同的基准点(SEEK_SET、SEEK_CUR、SEEK_END)。fseek(fp, 0L, SEEK_SET); // 移动到文件开头 - 获取文件指针位置:使用
ftell()函数获取当前文件指针的位置。long position = ftell(fp); - 重置文件指针:使用
rewind()函数将文件指针重置到文件开头。rewind(fp);
4. 文件操作的注意事项
- 错误处理:检查每个文件操作函数的返回值,处理可能出现的错误。
- 文件权限:确保程序有足够的权限来访问和操作文件。
- 文件格式:了解文件的格式和结构,以便正确地读取和写入数据。
ferror() 函数
ferror() 函数用于检查指定文件流是否在最近的文件操作中发生了错误。如果文件操作成功,ferror() 返回 0;如果发生了错误,返回非零值。ferror() 函数不会清除错误标志,这意味着如果发生错误,多次调用 ferror() 会一直返回非零值,直到使用 clearerr() 函数清除错误标志。
函数原型:
int ferror(FILE *stream);
使用示例:
FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
// 打开文件失败
} else {
char c;
while ((c = fgetc(fp)) != EOF) {
// 处理字符
if (ferror(fp)) {
// 发生错误
break;
}
}
fclose(fp);
}
feof() 函数
feof() 函数用于检查指定文件流是否已经到达文件末尾(EOF)。如果文件流已经到达文件末尾,feof() 返回非零值;否则返回 0。feof() 函数不会清除 EOF 标志,这意味着如果到达文件末尾,多次调用 feof() 会一直返回非零值,直到使用 clearerr() 函数清除 EOF 标志。
函数原型:
int feof(FILE *stream);
使用示例:
FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
// 打开文件失败
} else {
char c;
while ((c = fgetc(fp)) != EOF) {
// 处理字符
if (feof(fp)) {
// 到达文件末尾
break;
}
}
fclose(fp);
}
注意事项
ferror()和feof()都应该在文件操作之后立即调用,因为它们依赖于文件流的错误和 EOF 标志。- 如果一个文件操作同时导致错误和到达文件末尾,
ferror()和feof()都会返回非零值。 - 使用
clearerr()函数可以同时清除错误标志和 EOF 标志,恢复文件流的状态。
基于AI的学习





浙公网安备 33010602011771号