标题:文件操作只能在main函数中用吗
只看楼主
haiki
Rank: 1
等 级:新手上路
帖 子:11
专家分:4
注 册:2011-10-25
 问题点数:0 回复次数:4 
文件操作只能在main函数中用吗
#include<stdio.h>
main()
{
  FILE *fp;
  char ch;
  fp=fopen("test.txt","at+");
  ch=getchar();
  while(ch!='\n')
  {
     fputc(ch,fp);
     ch=getchar();   
  }
  fclose(fp);
}
在TC中编译没错误,运行没错误。但是稍微改一下(如下)就不行了,编译没错误,也能运行,但是会陷入死循环。
#include<stdio.h>
void write()
{
   FILE *fp;
  char ch;
  fp=fopen("test.txt","at+");
  ch=getchar();
  while(ch!='\n')
  {
     fputc(ch,fp);
     ch=getchar();   
  }
  fclose(fp);
}
main()
{
  write();
}
搜索更多相关主题的帖子: write 
2011-12-17 13:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
你起函數名挺有膽識,write()也敢用。改改這名字看?

授人以渔,不授人以鱼。
2011-12-17 14:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
剛查了一下TC的庫函數,明確是這個問題了:你使用了write()庫函數的名字,在你的主程序中模塊中雖然覆蓋了庫函數,但stdio.h其它函數使用的仍然是庫函數。我不知道你是忽略TC編譯器警告強行運行程序還是怎麽的,照理說TC不應該沒出警告。

授人以渔,不授人以鱼。
2011-12-17 14:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
以下是TC中wirte()庫函數的原型:

int write(int handle,void *buf,int nbyte);

将buf中的nbyte个字符写入文件号为handle的文件中。還有一個帶下劃綫開頭的,也是這個功能。

[ 本帖最后由 TonyDeng 于 2011-12-17 14:12 编辑 ]

授人以渔,不授人以鱼。
2011-12-17 14:11
haiki
Rank: 1
等 级:新手上路
帖 子:11
专家分:4
注 册:2011-10-25
得分:0 
回复 3楼 TonyDeng
确实是函数名的问题,谢谢。我学编程全是自学的,没看过什么手册或书籍之类的,用到了才去查,另外我的编程环境是dos7.1+turboc2,确实没有警告,在此感谢,问题解决了。
2011-12-17 16:47



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




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

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