新手学习C语言到文件顺序读写一节,求助帮忙理解程序,请备注就行!

//怎样向文件读写字符,本体我的问题是为什么没有用fgetc函数逐渐输入字符,还有为什么我在资源管理器里找不到新建的文件?
#include
#include
int main()
{
FILE * fp;
char ch,filename[10];
printf("请输入所用的文件名:");
scanf("%s",filename);
if((fp = fopen("filename","w")) == NULL)
{
printf("无法打开此文件\n");
exit(0);//终止程序
}
ch = getchar();//这个语句不理解,
printf("请输入一个准备存储到磁盘的字符串(以#结束):");
ch = getchar();
while(ch != '#')
{
fputc(ch,fp);
putchar (ch);
ch = getchar();
}
fclose(fp);
putchar (10);
return 0;
}

2个回答

用来接收你后面输入的换行符。scanf()函数按ENTER结束输入,但是scanf不会捕获换行符,换行符存在输入的缓冲区里面,如果不用getchar()捕获,就会被后一个getchar()捕获,这样文件里面就会先存入一个空行。

 #include <stdlib.h>
#include <stdio.h>

int main()
{
    FILE * fp;
    char ch,filename[10];
    printf("请输入所用的文件名:");
    scanf("%s",filename);
    if((fp = fopen(filename,"w")) == NULL)//去掉双引号
    {
        printf("无法打开此文件\n");
        exit(0);//终止程序
    }
    ch = getchar();//读取scanf留在缓冲区的回车
    printf("请输入一个准备存储到磁盘的字符串(以#结束):");
    ch = getchar();
    while(ch != '#')
    {
        fputc(ch,fp);
        putchar (ch);
        ch = getchar();
    }
    fclose(fp);
    putchar (10);
    return 0;
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问