C语言简单的文件操作问题!

libinden71 2015-11-26 03:03:11
int main()
{
char ch;
int s = 0;
char max[100] = "hello world!\n";
FILE *fp = NULL;
fp = fopen("f:\\cinst.txt", "r+");
if (fp != NULL)
{
printf("文件打开成功!\n");
}
while (ch = getchar()!= '\n')
{
putc(ch, fp); //为什么这种方式文件cinst.txt无法得到这个字符啊?有人说是回车的问题(我不表示很明白)!
} //getchar()得到流的一个字符赋给ch然后判断是否等于‘\n’,在做内部循环。看不出来这哪里错了!
fclose(fp);
return 0;
}
换成这样的形式文件就可以得到一个字符!(2种形式的差别在哪)
ch = getchar();
while (ch!= '\n')
{
putc(ch, fp);
ch = getchar();
}
还有个问题:FILE *fp :比如我想取cinst.txt这个文件里的某个字符,是不是不能用*(fp+i)这样的形式?
...全文
114 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
libinden71 2015-11-26
  • 打赏
  • 举报
回复
受教
引用 5 楼 zhao4zhong1 的回复:
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
 if (条件1) break;
 //...
 if (条件2) continue;
 //...
 if (条件3) return;
 //...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义都是当文件未结束时读字符
while (!feof(f)) {
 a=fgetc(f);
 //...
 b=fgetc(f);//可能此时已经feof了!
 //...
}
而这样写就没有问题:
while (1) {
 a=fgetc(f);
 if (feof(f)) break;
 //...
 b=fgetc(f);
 if (feof(f)) break;
 //...
}
类似的例子还可以举很多。
受教了
赵4老师 2015-11-26
  • 打赏
  • 举报
回复
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
 if (条件1) break;
 //...
 if (条件2) continue;
 //...
 if (条件3) return;
 //...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义都是当文件未结束时读字符
while (!feof(f)) {
 a=fgetc(f);
 //...
 b=fgetc(f);//可能此时已经feof了!
 //...
}
而这样写就没有问题:
while (1) {
 a=fgetc(f);
 if (feof(f)) break;
 //...
 b=fgetc(f);
 if (feof(f)) break;
 //...
}
类似的例子还可以举很多。
libinden71 2015-11-26
  • 打赏
  • 举报
回复
不好意思!各位 打错了 怪不得!
qinfeng0701 2015-11-26
  • 打赏
  • 举报
回复
while ((ch = getchar())!= '\n') 你那个语句是什么鬼?
paschen 2015-11-26
  • 打赏
  • 举报
回复
getchar不是读文件的
晴天里的微风 2015-11-26
  • 打赏
  • 举报
回复
getchar();函数不是从文件里去数据吧。fgetc()函数吧。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧