关于#c语言#的问题,请各位专家解答!

自己建立了一个文本文件夹,想先在里面写入“你好”,然后再读出来。但是得不到想要的结果,什么情况啊?

#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() 函数来写入 "你好"。