自己建立了一个文本文件夹,想先在里面写入“你好”,然后再读出来。但是得不到想要的结果,什么情况啊?
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
FILE *fp;
char a,b;
if((fp=fopen("新建文本文档.txt","r+"))==NULL)
{
printf("打不开文件");
exit(0);
}
scanf("%c",&a);
fprintf(fp, "%c", a);
fclose(fp);
fscanf(fp, "%c", &b);
printf("%c",b);
return 0;
}
修改如下,供参考:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
FILE* fp;
char b[16]; //修改
while ((fp = fopen("新建文本文档.txt", "r+")) == NULL) //修改 if()
{
//printf("打不开文件!\n"); 修改
fp = fopen("新建文本文档.txt", "w");
fprintf(fp, "你好");
fclose(fp);
//exit(0); 修改
}
//scanf("%c", &a); 修改
//fprintf(fp, "%c", a); 修改
fscanf(fp, "%s\n", b);//fscanf(fp, "%c", &b); 修改
fclose(fp);
printf("%s", b); //printf("%c", b);
return 0;
}
a,b是字符,保存不了汉字,一个汉字占2个字符位置。
定义为char a[10],b[10]
fclose(fp);后重新fopen才能读取或写入。
您的程序中有一个问题,即在写入 "你好" 之后,没有将文件指针重置为文件开头,导致在读取文件时无法获取正确的数据。此外,您还需要在写入和读取文件之后关闭文件。
以下是您的程序的修正版本:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
char a, b;
if ((fp = fopen("新建文本文档.txt", "r+")) == NULL) {
printf("打不开文件");
exit(1);
}
// 写入数据并将文件指针重置为文件开头
fprintf(fp, "你好");
fseek(fp, 0, SEEK_SET);
// 读取数据
fscanf(fp, "%c", &b);
printf("%c", b);
fclose(fp);
return 0;
}
注意,您需要使用 fseek() 函数将文件指针重置为文件开头。此外,我们将 scanf() 函数替换为 fprintf() 函数来写入 "你好"。