鱼C论坛

 找回密码
 立即注册
查看: 4055|回复: 3

文件读写的一个问题

[复制链接]
发表于 2013-3-16 11:47:56 | 显示全部楼层 |阅读模式
10鱼币
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>



  4. int main(int argc, char **argv)
  5. {
  6.         FILE *fp;
  7.         if((fp = fopen("test.dat","w+")) == NULL)
  8.         {
  9.                 printf("error\n");
  10.                 exit(-1);
  11.         }
  12.         struct node
  13.         {
  14.                 char name[20];
  15.                 char password[10];
  16.                 int money;
  17.                 int power;
  18.         };
  19.         typedef struct node *user;
  20.         user p = malloc(sizeof p);
  21.         user q = malloc(sizeof q);
  22.         strcpy(p->name,"aaa");
  23.         strcpy(p->password,"bbb");
  24.         p->money = 1;
  25.         p->power = 2;
  26.        
  27.         fwrite(p,sizeof(p),1,fp);
  28.         rewind(fp);
  29.         fread(q,sizeof q,1,fp);
  30.         printf("%s\n",q->name);
  31.         printf("%s\n",q->password);
  32.         printf("%d\n",q->money);
  33.         printf("%d\n",q->power);
  34.         free(p);
  35.         free(q);
  36.         fclose(fp);
  37. return 0;
  38. }
复制代码
将p指向结构体中的内容存入文件
然后从文件中读出来
放入q指向的结构体中

读出来的只有成员name
别的成员都不对 CentOS-2013-03-16-11-10-43.png


最佳答案

查看完整内容

这个出问题的地方是sizeof p这句,你定义的p是指针,获取的sizeof大小是4,所以有问题。 解决办法: 将所有sizeof p 改为 sizeof node。 修改代码: 运行结果:
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-16 11:47:57 | 显示全部楼层
这个出问题的地方是sizeof p这句,你定义的p是指针,获取的sizeof大小是4,所以有问题。
解决办法:
将所有sizeof p 改为 sizeof node。
修改代码:
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>



  4. int main(int argc, char **argv)
  5. {
  6.         FILE *fp;
  7.         if((fp = fopen("c:\\test.dat","w+")) == NULL)
  8.         {
  9.                 printf("error\n");
  10.                 exit(-1);
  11.         }
  12.         struct node
  13.         {
  14.                 char name[20];
  15.                 char password[10];
  16.                 int money;
  17.                 int power;
  18.         };
  19.         typedef struct node *user;       
  20.         user p = (user)malloc(sizeof(node));
  21.         user q = (user)malloc(sizeof(node));
  22.         //int d = sizeof node;
  23.         strcpy(p->name,"aaa");
  24.         strcpy(p->password,"bbb");
  25.         p->money = 1;
  26.         p->power = 2;

  27.         fwrite(p,sizeof(node),1,fp);
  28.         rewind(fp);
  29.         fread(q,sizeof(node),1,fp);
  30.         printf("%s\n",q->name);
  31.         printf("%s\n",q->password);
  32.         printf("%d\n",q->money);
  33.         printf("%d\n",q->power);
  34.         free(p);
  35.         free(q);
  36.         fclose(fp);
  37.         flushall();
  38.         getchar();
  39.         return 0;
  40. }
复制代码
运行结果:
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-16 15:44:22 | 显示全部楼层

CentOS-2013-03-16-15-40-34.png 很感谢你,但我用的是gcc,
我这里无法编译通过,若改成struct node 还是无法显示password 只能显示name。

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-16 16:13:57 | 显示全部楼层
小新110 发表于 2013-3-16 13:13
这个出问题的地方是sizeof p这句,你定义的p是指针,获取的sizeof大小是4,所以有问题。
解决办法:
将所 ...

解决了! 我将node改成*p就好了 谢谢你!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-5 15:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表