向文件读入字符
要的效果是:从键盘输入一些字符,并逐个把他们送到磁盘上去,直到用户输入#现在却输入一个字母就停止了,代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char ch,filename;
printf("请输入所用的文件名:");
scanf("%s",filename);
getchar();
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
printf("请输入一个准备存储到磁盘的字符串(以#结束):");
ch=getchar();
if(ch!='#')
{
fputc(ch,fp);
putchar(ch);
ch=getchar();
}
fclose(fp);
putchar(10);
return 0;
}
效果如下:
应该是输出1234才对!
用while循环
while (ch != '#')
否则只会判断一次就结束 这个代码的关键是必须用无缓冲的键盘输入,就是说,键盘输入是实时的,无需按下回车键
#include<stdio.h>
#include<conio.h>
int main()
{
FILE * fp ;
char ch , filename ;
printf("请输入所用的文件名:") ;
scanf("%s" , filename) ;
if((fp = fopen(filename , "w")) != NULL) {
printf("请输入一个准备存储到磁盘的字符串(以#结束):") ;
for(;;) {
ch = getch() ;
if(ch == '\r') {
printf("\n") ;
fprintf(fp , "\n") ;
} else {
putch(ch) ;
if(ch != '#') fputc(ch , fp) ;
else break ;
}
}
fclose(fp) ;
printf("\n") ;
} else {
fprintf(stderr , "无法创建文件%s\n\n" , filename) ;
}
printf("\n") ;
}
页:
[1]