Schwierigkeiten mit der Einfügung von C-string in die Link-Liste

Ich Schreibe an einem Programm, um eine Datei Lesen und speichern Sie dann die Daten in einer verknüpften Liste.

linkedList.h

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>

struct linked_list
{
    char *stock_name;
    double stock_price;
    struct linked_list *next;
};

typedef struct linked_list NODE;

NODE* insert(NODE *head, double stock_price, char *stock_name);
void printList(NODE *head);

linkedList.c

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#include"linkedList.h"

void printList(NODE *head)
{
    NODE *this = head;

    while(this != NULL)
    {
        printf("stock name:%s , stock price:%lf\n", this->stock_name, this->stock_price);
        this = this->next;
    }

}


NODE* insert(NODE *head, double stock_price, char *stock_name)
{
    NODE *newNode = malloc(sizeof(NODE));

    if(head == NULL)
    {
        newNode->stock_price = stock_price;
        newNode->stock_name = stock_name;
        head = newNode;
    }
    else
    {
        newNode->stock_price = stock_price;
        newNode->stock_name = stock_name;

        newNode->next = head;
        head = newNode;
    }
    return head;
}

main.c

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include "linkedList.h"

NODE *head;
bool headNode = true;

void insertIntoLinkedList(char *stock_name, double stock_price);

int main ( int argc, char *argv[] )
{
    head = malloc(sizeof(NODE));

    double stock_price;
    char stock_name[100];
    int stock_name_counter = 0;

    **..then I read the file..**


    stock_name[stock_name_counter] = '\0'; //to end my C string
    stock_name_counter = 0;  //this is used for reading char

    insertIntoLinkedList(stock_name, stock_price); //I double checked here,the name and price is correct
         **......**
    printList(head); //**Not the output I want**
    fclose( file );


void insertIntoLinkedList(char *m_stock_name, double m_stock_price)
{
    if(headNode == true)
    {
        head = insert(NULL, m_stock_price, m_stock_name);
        headNode = false; //this is used to insert data to my linked list for the first time
    }
    else
    {
        head = insert(head, m_stock_price, m_stock_name);
    }
}

Hier ist das problem: wenn die Datei das enthält:
YAHOO 120
GOOGLE 10
APPLE 199

meine printList() gab mir dieses:
APPLE 120
APPLE 10
APPLE 199

Habe ich versucht zu Debuggen, die für Stunden und immer noch keinen Reim, warum wird der name nicht gespeichert in meine Link-Liste richtig(aber der Preis ist store richtig..)...jede Hilfe zu schätzen wissen 🙂

  • Stellen Sie zu codereview.stackexchange.com
  • Überlegen Sie auch, nur mit sys/queue.h anstelle der ziehen Sie Ihre Gehirne heraus.
  • thx, aber ich möchte versuchen, das schreiben meiner eigenen Datenstruktur, bevor ich Sie vertraut mit C 🙂
InformationsquelleAutor user1701840 | 2013-05-08
Schreibe einen Kommentar