萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 2030|回复: 5

请教一个C语言中fgetc和fputc的问题!

[复制链接]
发表于 2009-6-27 15:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
本帖最后由 peri_jin 于 2009-6-27 16:08 编辑

In der Datei eingabe.txt beginnt jede Zeile mit einem Datum der Form TT.MM.JJJJ, dem ein Zeilenumbruch folgt. D.h. in jeder Zeile steht genau ein Datum. Sie sollen nun die Datei kopieren, wobei die Punkte in einem Datum durch Doppelpunkte ersetzt werden. D.h. aus “16.07.2007“ in der Datei eingabe.txt wird “16:07:2007“ in der Datei ausgabe.txt.
以上是原题,我考虑的问题是如果在eingabe.txt中有z.B 16.这样的数字出现,但是不是一个完整的datum就不应该被拷贝过来。我的问题是怎么判断这是个datum呢?int (FILE*fin,FILE*fout)
{   char c;
     while((c=fgetc(filein))!=EOF)
     {   if(c>=0||c<=9)
            { fgetc(c, fileout);
               c=fgetc(filein);
                if(c==".")
                 { c=":";
                   fputc(c, fileout);
                   c=fgetc(filein);
                 }
          else c=fgetc(filein);
      }
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-7-8 12:10 | 显示全部楼层
不合法的输入数据在这里应该不予考虑,你只要按输入一定是合法的写就行了。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-7-8 12:14 | 显示全部楼层
你的程序好像也有问题,几十年没有写C了,不过看逻辑应该是有问题的。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-7-8 14:00 | 显示全部楼层
不合法的输入数据在这里应该不予考虑,你只要按输入一定是合法的写就行了。
Pant1980 发表于 2009-7-8 12:10


同意
人家题目说的是每行都是以TT.MM.JJJJ格式的日期开始,然后后面就是个换行符
所以每行都是一个完整的那种格式的日期啊,你完全不用去考虑日期不合法的情况,只要把点全变成冒号就行了

你的程序我粗略看了一下,你是一个字符一个字符的读,这样的话,如果文章长度很长,效率会比较低。
既然题目说格式是固定的,你可以考虑用fscanf来读取,然后fprintf写入新文件,用这两个函数是因为他们可以自定义format。e.g. "%2d.%2d.%4d\n"用于fscanf ,"%2d:%2d:%4d\n"用于fprintf

好久没有用C语言了,大致就是这个思路吧,你再自己琢磨琢磨
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-7-8 14:02 | 显示全部楼层
不过要是题目要求必须用fgetc和fputc的话就别管我上面写的了,嘻嘻~
你就直接一个一个读就行了,遇到点号变冒号,不用判断日期数字是否合法
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-7-9 21:53 | 显示全部楼层
考虑太多了吧!其实就是找到所有的”点“,把他们替换成"冒号"
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-5-2 22:53 , Processed in 0.058637 second(s), 20 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表