gpt4 book ai didi

c - 写入 - 读取二进制文件中的结构

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:00 30 4
gpt4 key购买 nike

<分区>

我只是想在二进制文件中编写一个 Point 结构并读取写入的结构。

有人能解释一下为什么这段代码不起作用吗?

#include<stdio.h>
#define N 100

typedef struct Point Point;
struct Point{
float x;
float y;
};

void initialisePoint(Point * p);
void showPoint(Point * p);
void initialiseFileName(char * fileName);
int writePointToFile(char * fileName, Point * p);
int readPointFromFile(char * fileName, Point * p);

int main()
{
Point p1 = {0};
Point p2 = {0};
char fileName[N] = {0};
int exitStatus = 0;

initialisePoint(&p1);
showPoint(&p1);

initialiseFileName(fileName);

printf("Vous avez entré : %s\n", fileName);

printf("Write return : %d\n", writePointToFile(fileName, &p1));

printf("Read return : %d\n", readPointFromFile(fileName, &p2));

showPoint(&p2);

return exitStatus;
}

void initialisePoint(Point * p){
printf("Entrez une valeur pour x : ");
scanf("%f", &p->x);
printf("Entrez une valeur pour y : ");
scanf("%f", &p->y);
}
void showPoint(Point * p){
printf("Le point est aux coordonnées (x,y) = (%.2lf, %.2lf).\n", p->x, p->y);
}
void initialiseFileName(char * fileName){
printf("Entrez une valeur pour le nom de fichier : ");
scanf("%s", fileName);
}
int writePointToFile(char * fileName, Point * p)
{
FILE* f2 = NULL;

f2 = fopen(fileName, "wb");

if(f2 != NULL){
if(fwrite(&p, sizeof(struct Point), 1, f2) != 1){
printf("Could not write to file.");
fclose(f2);
return -1;
}
}
else
{
printf("Could not open file.");
return -1;
}
fclose(f2);
return 0;
}
int readPointFromFile(char * fileName, Point * p){

FILE* f = NULL;

f = fopen(fileName, "rb");

if(f != NULL){
if(fread(&p, sizeof(struct Point), 1, f) != 1){
printf("Could not read from file.");
fclose(f);
return -1;
}
}
else{
printf("Could not open file.");
return -1;
}
fclose(f);
return 0;
}

这是我的日志:

/home/sviktor/CLionProjects/untitled/cmake-build-debug/untitled Entrez une valeur pour x : 2.33 Entrez une valeur pour y : 1.34 Le point est aux coordonnées (x,y) = (2.33, 1.34). Entrez une valeur pour le nom de fichier : test123.bin Vous avez entré : test123.bin Write return : 0 Read return : 0 Le point est aux coordonnées (x,y) = (0.00, 0.00).

Process finished with exit code 0

我正在使用 Fedora 和 clion IDE,

Bless 编辑器说我的 test123.bin 文件包含此 C4 2E 18 F1 FC 7F 00 00 但读取功能不起作用(它给出点 = (0,0))

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com