打印
[嵌入式linux]

磕头感谢,解答谭老师的C经典,进来看看文件操作

[复制链接]
1961|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())!='#')
{
        ....
}

使用特权

评论回复
5
flanker| | 2009-4-30 17:49 | 只看该作者

这个逻辑有问题

while (ch != '#')
        {
            fputc (ch, fp);
            putchar (ch);
        }
无限循环地向fp所指文件写入ch,这样当然会死机。

使用特权

评论回复
6
caven|  楼主 | 2009-4-30 20:06 | 只看该作者

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

但楼上这位说会死循环,应该不会吧.
应该只要输如字符'#',这个循环体就会结束.
不知道说得对不

使用特权

评论回复
7
flanker| | 2009-4-30 20:46 | 只看该作者

当然是死循环。

while (ch != '#')
{
    fputc (ch, fp);
    putchar (ch);
}
这个地方是putchar,所以ch永远不会变。这不是死循环是什么呢?

使用特权

评论回复
8
caven|  楼主 | 2009-5-2 08:38 | 只看该作者

如何修改

那7楼的,这个根据功能应该如何修改
让它不进入死循环.帮忙一下!

使用特权

评论回复
9
鱼头08614| | 2009-5-2 14:08 | 只看该作者

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

试试这个,可以跳出循环,但不知道对程序结果会不会有影响:
if (ch != '#')
{
    fputc (ch, fp);
    putchar (ch);
    contiune;
}

使用特权

评论回复
10
sinanjj| | 2009-5-2 14:11 | 只看该作者

汗。。。。。

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



这问题。。。。。。

使用特权

评论回复
11
sinanjj| | 2009-5-2 14:12 | 只看该作者

还没骨气。。

“磕头感谢”


-------------又见跪求。最bs没骨气的了。。。。

使用特权

评论回复
12
电脑圆圆| | 2009-5-3 20:40 | 只看该作者

。。。


        do{
            ch = getchar ();
            fputc (ch, fp);
            putchar (ch);
             
          }while (ch != '#')

使用特权

评论回复
13
flanker| | 2009-5-4 18:03 | 只看该作者

这样不行!

最后一个#号也会被写到文件里面。
应该是在收到#号的时候break出来才符合逻辑。

使用特权

评论回复
14
icecut| | 2009-5-8 14:39 | 只看该作者

哈哈哈哈

俺不会说话

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

28

帖子

0

粉丝