tianyang648
2022-03-08 20:42
采纳率: 100%
浏览 61

c语言的问题,写入文件的内容变成乱码了,输出的也是乱码

问题遇到的现象和发生背景

正在学c语言,改了一下网课的代码,发现输入的和输出的全是乱码

问题相关代码,请勿粘贴截图

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#pragma warning(disable : 4996)

struct Student
{
char name[20];
int num;
int age;
float score;
};

int main(void)
{
struct Student boys[3];
struct Student boy;
struct Student* pBoys;
FILE* fp;

pBoys = boys;
fp = fopen("text.txt", "wb+");
if (fp == NULL)
{
    printf("不能打开该文件。\n");
    getch();
    exit(0);
}
printf("请输入学生的相关数据:\n");

for (size_t i = 0; i < 3; i++)
{
    scanf("%s %d %d %f", pBoys->name, &pBoys->num, &pBoys->age, &pBoys->score);
    pBoys++;
}
fwrite(boys, sizeof(struct Student), 3, fp);
if (ferror(fp))
{
    puts("读取出错");
}
else
{
    puts("读取成功");
}
fseek(fp, sizeof(struct Student), SEEK_SET);

fread(boys, sizeof(struct Student),3, fp);
for (size_t i = 0; i < 3; i++)
{
    printf("%s %d %d %f\n", pBoys->name, &pBoys->num, &pBoys->age, &pBoys->score);
    pBoys++;
}

fclose(fp);


return 0;

}

运行结果及报错内容

请输入学生的相关数据:
a 10 10 10
b 10 10 10
c 10 10 10
读取成功
烫烫;8z< 15726888 15726892 0.000000
仞8?橓?15726920 15726924 0.000000
15726952 15726956 0.000000

G:\C++练习\结构体\文件\Debug\文件示例函数fseek.exe (进程 15520)已退出,代码为 0。
按任意键关闭此窗口. . .

我的解答思路和尝试过的方法

试过fprint和fscanf代码,也是了把fseek换成rewind(fp),都不行,诊断之后,发现fwrite之后,文档里全变成了乱码

我想要达到的结果

本来是想逐条输出结构体内容,但是怎么改都不行

3条回答 默认 最新

相关推荐 更多相似问题