C语言如何将txt文件中的数据存入结构体中

#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>voidmain(){stru... #include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
struct yh
{
char usename[N];
char password[N];
float money;

}admin[100];

FILE *fp;
int i;
if((fp=fopen("e:\\usdatal.txt","r"))==NULL)
{
printf("不能打开文件\n");
exit(0);
}
while(!feof(fp))
fread(&admin[i], sizeof (struct yh),6,fp);
fclose(fp);
for(i=0;i<100;i++)
printf("%s%s%f",admin[i].usename,admin[i].password,admin[i].money);
fclose(fp);
}

执行后出现这个。

请问是哪里的错误。
展开
 我来答
文正153
2015-06-02 · TA获得超过2.1万个赞
知道大有可为答主
回答量:2221
采纳率:63%
帮助的人:610万
展开全部

因为结构体它里面有多种数据, 所以如果一个一个保存肯定是麻烦的. 所以, 如果保存的文件不是给用户看的, 而是只为程序所用, 那么直接用二进制方式打开文件, 然后用fwrite把结构的二进制数据写入内存

# include <stdio.h>

struct dat
{
    int i;char ch;double d;
};

int main()
{
    FILE *p = fopen("data.txt", "w");
    if (!p)
        return 0;
    fwrite(&p, sizeof(p), 1, p);
    fclose(p);
}
chmwh1992
2013-10-23 · TA获得超过1126个赞
知道小有建树答主
回答量:475
采纳率:100%
帮助的人:527万
展开全部
N没有定义
int i;i没有初始化
采用格式化读取fscanf(),下面是在你的程序基础上稍作修改
#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>
#define N 20
void main()

{

struct yh

{

char usename[N];

char password[N];

float money;

}admin[100];

FILE *fp;

int i=0;

if((fp=fopen("sdatal.txt","r"))==NULL)

{

printf("不能打开文件\n");

exit(0);

}

while(!feof(fp))
{
fscanf(fp, "%s%s%f",admin[i].usename,admin[i].password,&admin[i].money);
i++;
}

fclose(fp);

for(i=0;i<2;i++)

printf("%s\t%s\t%.0f\n",admin[i].usename,admin[i].password,admin[i].money);

fclose(fp);

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5c69cfc
2013-10-22 · TA获得超过238个赞
知道小有建树答主
回答量:325
采纳率:100%
帮助的人:223万
展开全部
用 fscanf 读字符串数字吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式