[嵌入式linux] 磕头感谢,解答谭老师的C经典,进来看看文件操作

[复制链接]
3594|13
 楼主| caven 发表于 2009-4-30 15:30 | 显示全部楼层 |阅读模式
ST, tc, CAN, AN, pen
#include <stdio.h>

main ()
{
    FILE * fp;
    char ch, filename [10];
    scanf ("%s", filename);

    if ((fp = fopen(filename, "w")) == NULL)
        {
            printf ("Can not open file\n");
            exit (0);
        }
    ch = getchar ();
    while (ch != '#')
        {
            fputc (ch, fp);
            putchar (ch);
        }
    fclose (fp);
    
}

功能说明:从键盘输入一些字符,逐一把它输出到磁盘中,知道输入"#"为止.

我现在只要输入一个文件名,例如test.txt,按回车,再输入其它的,都无法正常显示,TURBO C就死了.

查看磁盘,有一个test.txt, 但里面是空的, 可是文件大小又不象空文件,大概42K.

请哪位大虾过来指教一下. 磕头感谢.
奇门遁甲 发表于 2009-4-30 16:24 | 显示全部楼层

re

while((ch=getchar())!='#')
 楼主| caven 发表于 2009-4-30 16:29 | 显示全部楼层

LZ,我在上一句已经赋值了.语法没有问题.

奇门遁甲 发表于 2009-4-30 16:47 | 显示全部楼层

语法当然没问题,有问题编译会报错,是运行有问题啦

 你试试
//ch = getchar ();         注释掉 
 while((ch=getchar())!='#')
{
        ....
}
flanker 发表于 2009-4-30 17:49 | 显示全部楼层

这个逻辑有问题

while (ch != '#')
        {
            fputc (ch, fp);
            putchar (ch);
        }
无限循环地向fp所指文件写入ch,这样当然会死机。
 楼主| caven 发表于 2009-4-30 20:06 | 显示全部楼层

谢谢楼上两位的热心帮助.

但楼上这位说会死循环,应该不会吧.
应该只要输如字符'#',这个循环体就会结束.
不知道说得对不
flanker 发表于 2009-4-30 20:46 | 显示全部楼层

当然是死循环。

while (ch != '#')
{
    fputc (ch, fp);
    putchar (ch);
}
这个地方是putchar,所以ch永远不会变。这不是死循环是什么呢?
 楼主| caven 发表于 2009-5-2 08:38 | 显示全部楼层

如何修改

那7楼的,这个根据功能应该如何修改
让它不进入死循环.帮忙一下!
鱼头08614 发表于 2009-5-2 14:08 | 显示全部楼层

试试这个,可以跳出循环,但不知道对程序结果会不会影响

试试这个,可以跳出循环,但不知道对程序结果会不会有影响:
if (ch != '#')
{
    fputc (ch, fp);
    putchar (ch);
    contiune;
}
sinanjj 发表于 2009-5-2 14:11 | 显示全部楼层

汗。。。。。

LZ你自己先想想改改好不好。。。。。



这问题。。。。。。
sinanjj 发表于 2009-5-2 14:12 | 显示全部楼层

还没骨气。。

“磕头感谢”


-------------又见跪求。最bs没骨气的了。。。。
电脑圆圆 发表于 2009-5-3 20:40 | 显示全部楼层

。。。


        do{
            ch = getchar ();
            fputc (ch, fp);
            putchar (ch);
             
          }while (ch != '#')
flanker 发表于 2009-5-4 18:03 | 显示全部楼层

这样不行!

最后一个#号也会被写到文件里面。
应该是在收到#号的时候break出来才符合逻辑。
icecut 发表于 2009-5-8 14:39 | 显示全部楼层

哈哈哈哈

俺不会说话
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

28

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部