linked list - Printf linkedList in C Errors



我正在尝试从文件中读取数据。文件的每一行由:string1 string2 float组成示例:A1 A2 5.22我试图打印到屏幕上的链表的第一个元素的值,但每次我得到错误:

在"program.c"文件中错误:请求成员"weight"不是结构或联合

printf("%f", data -> weight);

或在"main.c"文件中-错误:解引用指向不兼容类型

的指针
printf("%fn", data ->weight);

也许有人可以帮我输出成员数据到屏幕上。问题可能在哪里,我该如何纠正?因为我试着阅读关于这个主题的其他答案,尝试不同的变化,但没有为"data"成员工作。

Edited:我通过修改解决的问题:
来struct节点;

但是"main.c"的错误:错误:将指针解引用到不兼容的类型仍然存在。也许有人有任何想法,我怎么能纠正我的代码?

编辑代码:

c

#include <stdio.h>
#include <stdlib.h>
#include "program.h"
int main(int argc, char *argv[] ){
    if(argc != 3){return 0;}
    node* data;
    data = getData(argv ,&data);
    printf("%f n", data -> weight); //here second mentioned error appears
return 0;
}

program.h

#ifndef program_h
#define program_h
#include <stdio.h>
#include <stdlib.h>
#include "program.h"
typedef struct node node;  
node* getData (char* argv[], node** data);
#endif

program.c

#include "program.h"
struct node                                          
{   
    char* from;
    char* to;
    float weight;
    struct node *next;
};
node* getData (char* argv[], node** data){
    node* elem; 
    node* lastElem;
    FILE *in=fopen(argv[1], "r");
    if (in == NULL) {
        fprintf(stderr, "Can't open input file !n");
        exit(1);
    } 
    char* string1 = (char*)malloc(100*sizeof(char));
    char* string2 = (char*)malloc(100*sizeof(char));;
    float dataW; // dataWeigth
    fscanf(in, "%s" ,string1);
    fscanf(in, "%s" ,string2);
    lastElem = malloc( sizeof(struct node));
    lastElem -> next = NULL;
    lastElem -> from = string1;
    *data = lastElem;
    printf("%f",(*data)->weight); 

    if(!feof(in)){
        fscanf(in, "%f%*[^n]" ,&dataW);
        lastElem -> to = string2;
        lastElem -> weight = dataW;
        while (!feof(in)) 
         {
            fscanf(in, "%s" ,string1);
            fscanf(in, "%s" ,string2);
            fscanf(in, "%f%*[^n]" ,&dataW);
            elem = malloc( sizeof(struct node));
            elem -> next = NULL;
            elem -> from = string1;
            elem -> to = string2;
            elem -> weight = dataW;
            lastElem -> next = elem;
            lastElem = elem;
         }
    }
    fclose(in);
 return *data; 
}

变化

struct node                                          
{   
    char* from;
    char* to;
    float weight;
    struct node *next;
};

typedef struct                                          
{   
    char* from;
    char* to;
    float weight;
    struct node *next;
} node;

将其移动到program.h,并且不包括program.h本身-这没有意义。相反,将其包含在main.cprogram.c中。

嗯…我无法看到program.c链接到main.c或program.h

中的任何地方

,因为它应该在那里,以便执行结构。..和. .没有将"数据"定义为结构的地方。因为它应该是

struct node* data;

node* data;

在函数中调用任何东西都不能使其成为结构

相关内容

  • 没有找到相关文章

最新更新