C语言学习过程中,对于文件调用函数 putc() 和getc()函数, 有一个疑惑的地方,这两个函数不能放在一起使用吗? 请看下面的程序:
#include<stdio.h>
int main(void)
{
FILE *fp;
char ch,ch1;
if ((fp=fopen("E:\\C\\13\\1219\\text2.txt","w"))==NULL)
printf("Open is failed.\n");
else
{
printf("Please enter a word:");
ch=getchar();
putc(ch,fp);
fclose(fp);
fp=fopen("E:\\C\\13\\1219\\text2.txt","r");
ch1=getc(fp);
printf("\n You entered is %c. \n",ch1);
}
fclose(fp);
return 0;
}
ch getchar 输入 字符 h .
输出的结果如下:
这个结果是正常的。
但是如果将上述程序中的,
fclose(fp);
fp=fopen("E:\C\13\1219\text2.txt","r");
去掉,即程序变成:
#include<stdio.h>
int main(void)
{
FILE *fp;
char ch,ch1;
if ((fp=fopen("E:\\C\\13\\1219\\text2.txt","w"))==NULL)
printf("Open is failed.\n");
else
{
printf("Please enter a word:");
ch=getchar();
putc(ch,fp);
ch1=getc(fp);
printf("\n You entered is %c. \n",ch1);
}
fclose(fp);
return 0;
}
同样 getchar 输入 h, 输出的结果是错误的,如下:
请问 这是 什么原因呢? 难道 写入之后,一定要 先关闭再打开之后,才能读取吗?
如果 不需要 先关闭再打开 , 那程序应该怎样写呢?
我试过 将 fopen 里的“W” 换成 “w+” 和 “a+” ,“r+” , 结果都是不行的。