| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1183 人关注过本帖
标题:这到底是怎么一回事,请高手帮忙?
只看楼主 加入收藏
xinhang
Rank: 2
等 级:论坛游民
帖 子:40
专家分:57
注 册:2006-7-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:12 
这到底是怎么一回事,请高手帮忙?
#include<stdio.h>
main()
{
  FILE *fp,*fp2;char ch;
  fp = fopen("1.txt","r");
  fp2 = fopen("12.txt","w");
  for(;(ch = getc(fp)!=EOF);)
    putc(ch, fp2);
   
}
执行完后,我打开12。txt 发现里面全是 一个个方框的字符 why?这不是我想要的。
搜索更多相关主题的帖子: why 
2010-05-02 16:53
hzz063
Rank: 3Rank: 3
来 自:横县百合
等 级:论坛游侠
帖 子:80
专家分:114
注 册:2010-1-27
收藏
得分:5 
程序代码:
#include<stdio.h>
main()
{
  FILE *fp,*fp2;char ch;
  fp = fopen("1.txt","r");
  fp2 = fopen("12.txt","w");
  for(;(ch = getc(fp)!=EOF);)//应是(ch = getchar())!='0';注意优先级别。还有ch是字符类型,用返回EOF判断是个陷阱,
                             //他容不下EOF。你可以把ch定义为int.
    putc(ch, fp2); //这里是fputc函数
   
}
我改了一下:
程序代码:
#include<stdio.h>
main()
{
  FILE *fp,*fp2;
  char ch;

 
  fp2 = fopen("12.txt","w");
  for(;(ch = getchar())!='0';)
    fputc(ch, fp2);
   
}


一切只因为喜欢。
2010-05-02 18:06
呜呼哀哉
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-02 18:13
xinhang
Rank: 2
等 级:论坛游民
帖 子:40
专家分:57
注 册:2006-7-25
收藏
得分:0 
很奇怪不是吗! 我又重新试了一次,又可以了,12。txt 是我想要的正常的字符。不知作何解释,望高手解答。

\" ﹏╭⌒╮¤ ﹋ ^^
2010-05-02 20:42
xinhang
Rank: 2
等 级:论坛游民
帖 子:40
专家分:57
注 册:2006-7-25
收藏
得分:0 
以下是引用hzz063在2010-5-2 18:06:40的发言:

#include<stdio.h>
main()
{
  FILE *fp,*fp2;char ch;
  fp = fopen("1.txt","r");
  fp2 = fopen("12.txt","w");
  for(;(ch = getc(fp)!=EOF);)//应是(ch = getchar())!='0';注意优先级别。还有ch是字符类型,用返回EOF判断是个陷阱,
                             //他容不下EOF。你可以把ch定义为int.
    putc(ch, fp2); //这里是fputc函数
   
}我改了一下:
#include<stdio.h>
main()
{
  FILE *fp,*fp2;
  char ch;
 
  fp2 = fopen("12.txt","w");
  for(;(ch = getchar())!='0';)
    fputc(ch, fp2);
   
}

getchar()函数是从终端获取字符,这位同学违背了作者的本意,不是很喜欢
EOF 值是 -1 对吧,但是char类型也可以看成是1字节int类型(你可以将EOF赋给ch,再以%d格式输出,试试,然后以%c格式的话就不行),我在gcc编译器上可以通过。
另外,fputc与putc函数结构上基本相似,可以互换,不是吗? 至于那个括号是打少了吧。

\" ﹏╭⌒╮¤ ﹋ ^^
2010-05-02 21:01
wsj3000
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:78
专家分:161
注 册:2009-8-4
收藏
得分:0 
程序代码:
#include<stdio.h>

int main()
{
  FILE *fp,*fp2;
  int ch;
  fp = fopen("1.txt","r");
  fp2 = fopen("12.txt","w");
  while((ch=fgetc(fp)) != EOF)
    fputc(ch, fp2);
  return 0;
}

这个还要请高手帮忙,建议你先看the c programming language,然后看 linux c 一站式学习,把前两张关于c的看完,你基本可以说自己不是菜鸟了~~~,当然关于c的其他最推荐的书是: c/c++高级编程指南, c与指针,这两本。

[ 本帖最后由 wsj3000 于 2010-5-2 22:26 编辑 ]
2010-05-02 22:22
hzz063
Rank: 3Rank: 3
来 自:横县百合
等 级:论坛游侠
帖 子:80
专家分:114
注 册:2010-1-27
收藏
得分:0 
回复 5楼 xinhang
抱歉,是可以换。
但你认为:
程序代码:
#include<stdio.h>
int main(void)
{
  char c;

  while((c = getchar()) != EOF)
  putchar(c);

 

 return 0;  
}
存在问题吗?它看起来没问题,运行“正常”。

一切只因为喜欢。
2010-05-02 22:42
xinhang
Rank: 2
等 级:论坛游民
帖 子:40
专家分:57
注 册:2006-7-25
收藏
得分:0 
以下是引用hzz063在2010-5-2 22:42:05的发言:

抱歉,是可以换。
但你认为:
#include<stdio.h>
int main(void)
{
  char c;

  while((c = getchar()) != EOF)
  putchar(c);
 
 return 0;  
}存在问题吗?它看起来没问题,运行“正常”。

你那没问题,但是你好像没看懂我的程序,还是怎么的?我是想一个文本把里的内容复制到另一个文本去,不是要从终端获取数据,然后放到12。txt中。

\" ﹏╭⌒╮¤ ﹋ ^^
2010-05-02 23:47
hzz063
Rank: 3Rank: 3
来 自:横县百合
等 级:论坛游侠
帖 子:80
专家分:114
注 册:2010-1-27
收藏
得分:0 
嗯…,其实给你看的那个程序代码那样写是不对的,不是能运行就是没问题。如果你明白上面的例子那有问题,你就明白你写的那代码隐藏一个问题。

一切只因为喜欢。
2010-05-03 08:38
xinhang
Rank: 2
等 级:论坛游民
帖 子:40
专家分:57
注 册:2006-7-25
收藏
得分:0 
以下是引用hzz063在2010-5-3 08:38:47的发言:

嗯…,其实给你看的那个程序代码那样写是不对的,不是能运行就是没问题。如果你明白上面的例子那有问题,你就明白你写的那代码隐藏一个问题。

我愚拙,望高手赐教。

\" ﹏╭⌒╮¤ ﹋ ^^
2010-05-03 18:10
快速回复:这到底是怎么一回事,请高手帮忙?
数据加载中...
 
   



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

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