因此,我的任务是接收一个文本文件的字母(每行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++;
    }
}

最佳答案

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

struct boggleDataNode *temp;


因此,您调用readData

readData(&temp);


您这样声明readData

void readData(struct boggleDataNode *temp){


因此,您将tempreadData的输入都声明为struct boggleDataNode *,但是将&temp传递给readData&表示您要发送后面的地址,因此&temp是指向struct boggleDataNode的指针,而struct boggleDataNode **是。

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

07-24 19:48