标题:请问随机读写文件的问题,fseek(fp, -2, SEEK_CUR);
只看楼主
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
结帖率:100%
已结贴  问题点数:20 回复次数:2 
请问随机读写文件的问题,fseek(fp, -2, SEEK_CUR);
#include<windows.h>
#include <stdio.h>
#include <stdlib.h>

FILE * fp;
int main(void)
{
    char temp;

    fp=fopen("letter.dat","w+");
    if (!fp)
    {
        puts("打开文件错误");
        exit(1);
    }

    for (int i = 'A'; i <= 'Z'; i++)
    {
        fputc(i,fp);
    }

    fseek(fp, -1, SEEK_END);
    for (int i = 26; i >0; i--)
    {
        temp = fgetc(fp);
        printf("%c", temp);

        fseek(fp, -2, SEEK_CUR); //字节数为什么是-2不是-1?
    }

    fclose(fp);
    puts("");

    system("pause");
    return 0;
}

搜索更多相关主题的帖子: temp 写文件 int 随机 include 
2020-05-09 16:53
星泪成寒
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:75
专家分:539
注 册:2013-5-19
得分:20 
程序代码:

#include <stdio.h>
#include <stdlib.h>

FILE * fp;
int main(void)
{
    char temp;

    //打开文件
    fp=fopen("letter.dat","w+");
    if (!fp){
        puts("打开文件错误");
        exit(1);
    }

    //写入26个字母 A~Z
    for (int i = 'A'; i <= 'Z'; i++) {
        fputc(i,fp);
    }

    //将文件指针指向最后一个有效字符 ‘Z’
    fseek(fp, -1, SEEK_END);
    
    //将写入的内容倒叙读出
    for (int i = 26; i > 0; i--) {
        temp = fgetc(fp);
        printf("%c", temp);
        /*当读取一个字符时,文件指针自动后移一位,所以要读取前一个字符时需要偏移2位
         * 例如上面的代码读区了字符‘Y’,此时文件指针就是自定指向下一个字符‘Z’
         * 所以想要读区字符‘X’ 就要向前便宜2位
         */
        fseek(fp, -2, SEEK_CUR); //字节数为什么是-2不是-1?
    }

    fclose(fp);
    puts("");

    return 0;
}

2020-05-09 18:05
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
得分:0 
谢谢楼上大哥解惑
2020-05-11 14:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501518-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.168788 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved