| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 571 人关注过本帖
标题:c语言 空文本文件的 文件指针 问题求教
只看楼主 加入收藏
tyf19938
Rank: 2
等 级:论坛游民
帖 子:47
专家分:24
注 册:2013-1-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
c语言 空文本文件的 文件指针 问题求教
使一个文件指针fp 指向一个空的txt即文本文件,此时的 feof(fp)为何值?  1?
好像不大对   
假设已经建立了  a.txt 一个空文本文件
#include<stdio.h>
#include<stdlib.h>
int main()
{
  FILE *fp;
  if((fp=fopen("a.txt","r"))==NULL)
 {  
   printf("error!\n");
   exit(0);
  }  
 if(feof(fp))
 printf("void\n");
}
\\此时结果不会输出void

#include<stdio.h>
#include<stdlib.h>
int main()
{
 FILE *fp;
 char c;
if((fp=fopen("a.txt","r"))==NULL)
{
 printf("error!\n");
  exit(0);
 }
c=fgetc(fp);
 putchar(c);
 if(feof(fp))  printf("void\n");
}
会出现 输出void
有假设a.txt 有一个字符 'a'  
第二个程序会把  'a'输出
那么fp的第一个指向到底是什么?
这个问题是我用链表储存文本文件字符时遇到的 当遇到空文本文件 会有错误,为了消除错误直接加上feof判断不管用
 难道只能借鉴第二段代码那样 char c ???
还是文本文件 无论是否为空 末尾都会有一些东西呢?
求高手
第5楼

[ 本帖最后由 tyf19938 于 2013-1-6 14:22 编辑 ]
搜索更多相关主题的帖子: 文本文件 include c语言 
2013-01-06 14:08
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
你打开一个文件,不动它,怎么知道它是不是空的呢?只动它一下,突然发现没东西可动了,所以feof就返回1了。

My life is brilliant
2013-01-06 14:10
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
fgetc如果读不到会返回EOF的,所以你需要判断。

My life is brilliant
2013-01-06 14:11
炎黄宇宙
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:104
注 册:2012-11-12
收藏
得分:0 
feof(fp)是用来判断文件指针是否指向文件结尾的
2013-01-06 14:16
tyf19938
Rank: 2
等 级:论坛游民
帖 子:47
专家分:24
注 册:2013-1-6
收藏
得分:0 
回复 2楼 lz1091914999
只能在移动后 feof(fp) 才会有效?
struct words *jiami(FILE *fp)
{
    struct words *p1,*p2,*head;
    int n=0;
    char c;
    p1=p2=(struct words *)malloc(LEN);
    n++;
    c=fgetc(fp);//是不是这样弄  先读取给c 才会在读取空文本时 没有错误呢,
    if(feof(fp))
        exit(0);
    p1->c=c+N;
    while(!feof(fp))
    {
        if(n==1)
         head=p1;
        else
            p2->next=p1;
        p2=p1;
        p1=(struct words *)malloc(LEN);
        n++;
        p1->c=fgetc(fp)+N;
    }
    p2->next=p1;
    p1->next=NULL;
    return head;
}
2013-01-06 14:18
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:4 
fgetc(fp) 表示读取当前文件指针的内容时   文件指针自动加1

DO IT YOURSELF !
2013-01-06 14:21
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:16 
回复 5楼 tyf19938
如果你要每次一个字节读取的话,这样最好:
int ch;
while ((ch = fgetc(fp)) != EOF) {
    ...
}
到了文件末尾循环就结束了。

My life is brilliant
2013-01-07 11:00
快速回复:c语言 空文本文件的 文件指针 问题求教
数据加载中...
 
   



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

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