这里为什么#号也会被输入进去
当把ch改成数组时结果又一切正常;
你这两段程序并不一样。
解释一下程序一的写入问题。
你先是判断了第一个字符是不是#号,如果不是则进入循环,然后又接收了一个值,将这个值写入文件中(第一个输入并没有写入,而是写入第二个值了)。
比如你输入1满足循环,然后在循环内输入#,没有对这个输入进行判断就写入了文件中了。
如有帮助,望点击我回答右上角【灰色采纳】按钮。
代码修改如下:
while((ch=getchar())!='#'){
printf("%c",ch);
fputc(ch,fp);
}
这是两串代码
#include <stdio.h>
//在d盘text文件夹下创建文件接收用户输入字符以#结束
//打开文件
//写入文件
//关闭文件
int main()
{
char filename[10];
FILE *fp;
char ch;
printf("请输入文件地址");
scanf("%s",&filename);
fp=fopen(filename,"w");
if(fp==NULL){
perror(fopen);
return -1;
}
printf("请输入字符以#号结束");
ch=getchar();
while(ch!='#'){
ch=getchar();
printf("%c",ch);
fputc(ch,fp);
}
fclose(fp);
fp=NULL;
return 0;
}
***分隔符
#include <stdio.h>
//在d盘text文件夹下创建文件接收用户输入字符以#结束
//打开文件
//写入文件
//关闭文件
int main()
{
char filename[10];
char ch[20];
int i=0;
FILE *fp;
printf("请输入文件地址");
scanf("%s",&filename);
fp=fopen(filename,"w");
printf("请输入字符以#号结束");
scanf("%s",&ch[i]);
while(ch[i]!='#'){
printf("%c",ch[i]);
fputc(ch[i],fp);
i++;
}
fclose(fp);
fp=NULL;
return 0;
}