| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1106 人关注过本帖
标题:文件指针吧不是会记录当前的位置吗,为什么 我一直读取文件的第一段
只看楼主 加入收藏
De_bug
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2016-3-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
文件指针吧不是会记录当前的位置吗,为什么 我一直读取文件的第一段
程序代码:
#include <stdio.h>
int main()
{
    FILE *fp;
    char*p;
    char ch[2000],c;
    p=ch;
    fp=fopen("http.tar (1)","r");
    c=fgetc(fp);
    while(!feof(fp))
    {
        while(c!='\n')
        {
            if(c=='\0')
            {
                c=fgetc(fp);
                continue;
            }
            *p=c;
            p++;
            if(feof(fp))
                {
                    break;
                }
            c=fgetc(fp);
        }
        printf("%s",ch);
    } 
    return 0;
}
[local]1[/local]
搜索更多相关主题的帖子: color 记录 
2016-03-06 00:38
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:20 
因为你的算法错误,当读取到'\n'字符后,你没有再进行fgetc操作,导致文件记录位置不再改变,所以反复显示第一段。
其实代码无需太复杂,只需下述代码即可完成你正常的显示需求:
    c=fgetc(fp);
    while(!feof(fp))
    {
        if(c)*p=c;
        p++;
        c=fgetc(fp);
    }
    c=0;
    *p=c;
    printf("%s",ch);

再简化成如下代码亦可:
    FILE *fp;
    char*p;
    char ch[2000],c;
    p=ch;
    fp=fopen("http.tar (1)","r");
    while((c=fgetc(fp))!=EOF)*p++=c;
    c=0;
    *p=c;
    printf("%s",ch);

[此贴子已经被作者于2016-3-6 08:37编辑过]


能编个毛线衣吗?
2016-03-06 08:33
De_bug
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2016-3-4
收藏
得分:0 
回复 2楼 wmf2014
我是想把文本里的文件一条条读出来 都出一条 进行操作 在进行读出,如此循环直到文本结束
2016-03-06 11:42
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
那就这样:
    while(!feof(fp))
    {
        if(c)*p++=c;
        if(c='\n')
        {
            *p='\0';
            printf("%s",ch);
            p=ch;
         }
         c=fgetc(fp);
    }

能编个毛线衣吗?
2016-03-06 11:50
De_bug
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2016-3-4
收藏
得分:0 
回复 4楼 wmf2014
谢了 非常感谢
2016-03-06 14:04
De_bug
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2016-3-4
收藏
得分:0 
回复 4楼 wmf2014
f(c)有点不懂 能帮解释吗 谢了
2016-03-06 14:28
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
if(c)*p++=c;等同于if(c!=0)*p++=c;

能编个毛线衣吗?
2016-03-06 17:01
De_bug
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2016-3-4
收藏
得分:0 
好的 懂了
2016-03-06 23:15
快速回复:文件指针吧不是会记录当前的位置吗,为什么 我一直读取文件的第一段
数据加载中...
 
   



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

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