| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1770 人关注过本帖
标题:倒着输出文件的问题
只看楼主 加入收藏
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:4 
倒着输出文件的问题
问一下文件最后是啥?比如字符串最后有一个'\0'代表字符串结束,那文件最后是只有EOF吗?
比如文件里存放了 hello world  .那用fseek(p_file,0,SEEK_END)后,p_file这个指针是指向文件最后一个字符 d  还是指向EOF?
运行这个程序,输出有点问题,我知道问题是在那个for里,具体咋回事?
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc,char* argv[])
{
    FILE* p_file;
    p_file=fopen("fccp","w");
    char buf[21];
    int len;
    while(1)
    {
        printf("input a string.up to 20 characters.input\"enter\"to end:\n");
        if(fgets(buf,21,stdin)==NULL)
        {
            fprintf(stderr,"input error!\n");
            exit(EXIT_FAILURE);
        }
        if(buf[0]=='\n')
            break;
        len=strlen(buf);
        if(buf[len-1]=='\n')
            buf[len-1]='\0';
        fputs(buf,p_file);
    }
        fclose(p_file);
        p_file=fopen("fccp","rb");
        fseek(p_file,0,SEEK_END);
        long to_head=ftell(p_file);
        int ch;
        for(long i=1;i<to_head;i+=sizeof(char))
        {
            ch=fgetc(p_file);
            fputc(ch,stdout);
            fseek(p_file,-i,SEEK_END);
        }
        fclose(p_file);
}

搜索更多相关主题的帖子: 输出 文件 include int char 
2018-01-22 11:47
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
这个由系统管理,只管调用相关函数读写就可以。
如果要究个底,可以了解磁盘文件分配表相关方面的东西。
2018-01-22 11:51
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
可以用 ftell() 获取当前位置相对于文件首的偏移字节数
2018-01-22 11:54
captain2050
Rank: 2
等 级:论坛游民
帖 子:57
专家分:43
注 册:2016-7-15
收藏
得分:0 
回复 2楼 吹水佬
谢谢。
不过输出时,第一个输出的是 不可打印的字符(乱码) 不知道为啥,我不确定,是不是 for里 i不应该从 1 开始

2018-01-22 11:58
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:20 
以下是引用captain2050在2018-1-22 11:58:38的发言:

谢谢。
不过输出时,第一个输出的是 不可打印的字符(乱码) 不知道为啥,我不确定,是不是 for里 i不应该从 1 开始

试试这样可否:
    fseek(p_file,0,SEEK_END);
    while (fseek(p_file,-1,SEEK_CUR) == 0)
    {
        ch = fgetc(p_file);
        fputc(ch,stdout);
        fseek(p_file, -1, SEEK_CUR);
    }
2018-01-22 15:20
快速回复:倒着输出文件的问题
数据加载中...
 
   



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

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