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

#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);
}

执行后出现这个。

请问是哪里的错误。

因为结构体它里面有多种数据, 所以如果一个一个保存肯定是麻烦的. 所以, 如果保存的文件不是给用户看的, 而是只为程序所用, 那么直接用二进制方式打开文件, 然后用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);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-23
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);

}本回答被提问者采纳
第2个回答  2013-10-22
用 fscanf 读字符串数字吧
相似回答