磕头感谢,解答谭老师的C经典,进来看看文件操作
#include <stdio.h><br /><br />main ()<br />{<br /> FILE * fp;<br /> char ch, filename ;<br /> scanf ("%s", filename);<br /><br /> if ((fp = fopen(filename, "w")) == NULL)<br /> {<br /> printf ("Can not open file\n");<br /> exit (0);<br /> }<br /> ch = getchar ();<br /> while (ch != '#')<br /> {<br /> fputc (ch, fp);<br /> putchar (ch);<br /> }<br /> fclose (fp);<br /> <br />}<br /><br />功能说明:从键盘输入一些字符,逐一把它输出到磁盘中,知道输入"#"为止.<br /><br />我现在只要输入一个文件名,例如test.txt,按回车,再输入其它的,都无法正常显示,TURBO C就死了.<br /><br />查看磁盘,有一个test.txt, 但里面是空的, 可是文件大小又不象空文件,大概42K.<br /><br />请哪位大虾过来指教一下. 磕头感谢.re
while((ch=getchar())!='#')LZ,我在上一句已经赋值了.语法没有问题.
语法当然没问题,有问题编译会报错,是运行有问题啦
你试试<br />//ch = getchar (); 注释掉 <br /> while((ch=getchar())!='#')<br />{<br /> ....<br />}这个逻辑有问题
while (ch != '#')<br /> {<br /> fputc (ch, fp);<br /> putchar (ch);<br /> }<br />无限循环地向fp所指文件写入ch,这样当然会死机。<br />谢谢楼上两位的热心帮助.
但楼上这位说会死循环,应该不会吧.<br />应该只要输如字符'#',这个循环体就会结束.<br />不知道说得对不当然是死循环。
while (ch != '#')<br />{<br /> fputc (ch, fp);<br /> putchar (ch);<br />}<br />这个地方是putchar,所以ch永远不会变。这不是死循环是什么呢?<br />如何修改
那7楼的,这个根据功能应该如何修改<br />让它不进入死循环.帮忙一下!试试这个,可以跳出循环,但不知道对程序结果会不会影响
试试这个,可以跳出循环,但不知道对程序结果会不会有影响:<br />if (ch != '#')<br />{<br /> fputc (ch, fp);<br /> putchar (ch);<br /> contiune;<br />}<br />汗。。。。。
LZ你自己先想想改改好不好。。。。。<br /><br /><br /><br />这问题。。。。。。还没骨气。。
“磕头感谢”<br /><br /><br />-------------又见跪求。最bs没骨气的了。。。。。。。
<br /> do{<br /> ch = getchar ();<br /> fputc (ch, fp);<br /> putchar (ch);<br /> <br /> }while (ch != '#')这样不行!
最后一个#号也会被写到文件里面。<br />应该是在收到#号的时候break出来才符合逻辑。哈哈哈哈
俺不会说话
页:
[1]