c语言从文档读取数据 浮点型整形 读取失败什么情况 。。。。

#include<stdio.h>
#include<iostream>
#include<fstream>
#include<string.h>
#include<malloc.h>
#include<conio.h>
typedef struct bookfuns{//书籍信息
    float price[10];
    int number[5];//馆存数量
}bookfun;/*={};测试*/
typedef struct node
{
    bookfuns data;//数据域
    struct node * next;//指针域
}ListNode,* LinkList;

LinkList InitList();
LinkList Init();
LinkList Create(LinkList head);//读取文件信息


LinkList InitList()
{
    LinkList head=(LinkList)malloc(sizeof(ListNode));//创立头结点
    if(head==NULL)
    {
        printf("空间分配无效!");
        exit(-1);//退出程序
    }
    head->next=NULL;
    return head;
}

LinkList Create(LinkList head)
{
    bookfuns LM;//接受文件数据
    LinkList rear;
    rear=head;//尾指针指向头节点head
    FILE *fp= fopen("D:\\ok.txt","r");
    if(fp==NULL)
    {
        printf("打开文件失败!\n");
        return NULL;
    }
    else{
   
while(fscanf(fp,"%f\n%d\n",LM.price,LM.number)!=EOF)//处理到文件尾
    {

       LinkList s=(LinkList)malloc(sizeof(ListNode));
       s->data=LM;
       s->next=NULL;
       rear->next=s;
       rear=s;//尾插法 r指向s
       printf("\n\n价格:%f\n馆藏数量: %d\n",LM.price,LM.number);//输出书籍信息

    }

printf("\n信息录入成功!\n");

    }
    fclose(fp);
    return head;
}
int main()
{
    LinkList head=InitList();
    head=Create(head);
}

 

#include<stdio.h>
#include<iostream>
#include<fstream>
#include<string.h>
#include<malloc.h>
#include<conio.h>
typedef struct bookfuns{//书籍信息
    float price[10];
    int number[5];//馆存数量
}bookfun;/*={};测试*/
typedef struct node
{
    bookfuns data;//数据域
    struct node * next;//指针域
}ListNode,* LinkList;

LinkList InitList();
LinkList Init();
LinkList Create(LinkList head);//读取文件信息


LinkList InitList()
{
    LinkList head=(LinkList)malloc(sizeof(ListNode));//创立头结点
    if(head==NULL)
    {
        printf("空间分配无效!");
        exit(-1);//退出程序
    }
    head->next=NULL;
    return head;
}

LinkList Create(LinkList head)
{
    bookfuns LM;//接受文件数据
    LinkList rear;
    rear=head;//尾指针指向头节点head
    FILE *fp= fopen("D:\\ok.txt","r");
    if(fp==NULL)
    {
        printf("打开文件失败!\n");
        return NULL;
    }
    else{
   
while(fscanf(fp,"%f\n%d\n",LM.price,LM.number)!=EOF)//处理到文件尾
    {
       LinkList s=(LinkList)malloc(sizeof(ListNode));
       s->data=LM;
       s->next=NULL;
       rear->next=s;
       rear=s;//尾插法 r指向s
       printf("\n\n价格:%f\n馆藏数量: %d\n",&LM.price,&LM.number);//输出书籍信息

    }

printf("\n信息录入成功!\n");

    }
    fclose(fp);
    return head;
}
int main()
{
    LinkList head=InitList();
    head=Create(head);
}

我帮你修改了一下代码,万望采纳。

(fscanf(fp,"%f\n%d\n",LM.price,LM.number

改为

(fscanf(fp,"%f\n%d\n",&LM.price,&LM.number

scanf基本类型都要取地址

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632