读取文件中的汉字 再输出来为什么是乱码?

我在要把文件中的汉字读出来,再输出为什么都是乱码
还有我将字符串写进文件,写出来的也是乱码

可能是读取和写入文件的函数方式使用的问题,如果是读取和写入文本内容可以使用fscanf读取文件,使用fprintf写入文件,一个实现如下:
参考资料:
C 库函数 – fscanf() | 菜鸟教程
C 库函数 – fprintf() | 菜鸟教程
C 库函数 – fopen() | 菜鸟教程

#include <iostream> 
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
    FILE *fp;
    char str[100];  //存储输字符串 

    if((fp=fopen("f:\\read.txt","r"))==NULL)  //以读模式打开文件 
    {
        cout<<"打开文件失败!\n";
        exit(1);
    }
    
    char ch;
    while(feof(fp)==0)
    {
        fscanf(fp,"%c",&ch);  //读取一个字符然后打印 
        cout<<ch;
    }
    fclose(fp);
    
    cout<<endl;
    
    if((fp=fopen("f:\\read.txt","a+"))==NULL)  //以追加模式打开文件 
    {
        cout<<"打开文件失败!\n";
        exit(1);
    }

    cout<<"请输入一个字符串:"<<endl; 
    cin>>str;  //获取输入字符串 
    fprintf(fp,"%s",str);  //把这个字符串追加到文件结尾 
    fclose(fp);
    
    system("pause");
    return 0;
}

img