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_SETSEEK_CURSEEK_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的学习




posted @ 2024-12-29 20:36  20241319吴辰曦  阅读(4)  评论(0编辑  收藏  举报