作业信息
这个作业属于哪个课程 | 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的学习