因此,我的任务是接收一个文本文件的字母(每行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){
因此,您将
temp
和readData
的输入都声明为struct boggleDataNode *
,但是将&temp
传递给readData
。 &
表示您要发送后面的地址,因此&temp
是指向struct boggleDataNode
的指针,而struct boggleDataNode **
是。您的代码还有其他问题,但这超出了您的问题范围。我会指出您的输出循环非常非常错误。