王盛帅 发表于 2020-3-1 13:05:52

向文件读入字符

要的效果是:从键盘输入一些字符,并逐个把他们送到磁盘上去,直到用户输入#
现在却输入一个字母就停止了,代码如下:
#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才对!

qiuyouzhi 发表于 2020-3-1 13:08:21

用while循环
while (ch != '#')
否则只会判断一次就结束

jackz007 发表于 2020-3-1 13:41:38

      这个代码的关键是必须用无缓冲的键盘输入,就是说,键盘输入是实时的,无需按下回车键
#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]
查看完整版本: 向文件读入字符