0

ファイルを読み取り、データをリンクされたリストに保存するプログラムを作成しています。

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

ここに問題があります: ファイルに含まれている場合: YAHOO 120 GOOGLE 10 APPLE 199

私のprintList()は私にこれを与えました: APPLE 120 APPLE 10 APPLE 199

私は何時間もデバッグしようとしてきましたが、リンクされたリストに名前が適切に保存されていない理由をまだ理解できません(しかし、価格は適切に保存されています..)...どんな助けにも感謝します:)

4

3 に答える 3