链接列表不会打印? C

时间:2015-06-23 23:57:14

标签: c function linked-list

所以我的任务是接收一个文本文件的字母(每行6个),将其保存到链接列表中,然后打印出特定的信息" die"(在这种情况下) - 是每组6个字母。

我已经在readData函数中正确读取了数据(我认为),但我不确定该链接列表是否正确传递。当我尝试打印main中的链接列表(行~40-41)时,我什么都没得到。我是否错误地将我的功能传递给readData

这是我的代码:

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

#define LENGTH 80

struct boggleDataNode {
    char data[3];
    struct boggleDataNode *nextData;
};

struct boggleDieSideNode{
    char dieSideData[3];
    struct boggleDieSideNode *nextSide;
};

void readData(struct boggleDataNode *temp);
void printData(struct boggleDataNode *temp);

int main() {
    int counter = 0;
    struct boggleDataNode *head;
    struct boggleDieSideNode *head1;
    struct boggleDataNode *temp;

    head = NULL;
    head1 = NULL;
    temp = head;

    printf("test\n\n");

    readData(&temp);
//    printData(temp);
    while(counter = 0, counter<100, counter++)
        printf("%s ", temp->data[counter]);

    system("pause");
    return 0;
}

void readData(struct boggleDataNode *temp) {
    //initializing variables including
    //opening the input file
    FILE *input = fopen("BoggleData.txt","r");
    char data[96] = {};
    struct boggleDataNode *new;
    int counter = 0;

    temp = new;
    //error checking that the file opened
    if (input == NULL) {
        fprintf(stderr, "Can't open input file!\n");
        exit(1);
    }
    new = (struct boggleDataNode *)malloc(sizeof(struct boggleDataNode));

    while (fscanf(input, "%s", data) != EOF) {
        printf("%s ", data);
        strcpy(temp->data, data);
        printf("Data number %d %s \n",counter,temp->data);

        temp->nextData = NULL;
        counter++;
    }
}

1 个答案:

答案 0 :(得分:1)

您将结构错误地传递给readData。你这样声明你的变量:

struct boggleDataNode *temp;

你这样调用readData

readData(&temp);

您声明readData

void readData(struct boggleDataNode *temp){

因此,您将tempreadData的输入声明为struct boggleDataNode *,但是您将&temp传递给readData&表示您要发送以下内容的地址,因此&temp是指向struct boggleDataNode指针的指针,该struct boggleDataNode **是<{1}}。

您的代码还存在其他问题,但这超出了您的问题的范围。我会指出你的输出循环非常非常错误。