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);
}
执行后出现这个。
请问是哪里的错误。 展开
#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);
}
执行后出现这个。
请问是哪里的错误。 展开
3个回答
展开全部
因为结构体它里面有多种数据, 所以如果一个一个保存肯定是麻烦的. 所以, 如果保存的文件不是给用户看的, 而是只为程序所用, 那么直接用二进制方式打开文件, 然后用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);
}
展开全部
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);
}
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);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用 fscanf 读字符串数字吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询