所以我的任务是接收一个文本文件的字母(每行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++;
}
}
答案 0 :(得分:1)
您将结构错误地传递给readData
。你这样声明你的变量:
struct boggleDataNode *temp;
你这样调用readData
:
readData(&temp);
您声明readData
:
void readData(struct boggleDataNode *temp){
因此,您将temp
和readData
的输入声明为struct boggleDataNode *
,但是您将&temp
传递给readData
。 &
表示您要发送以下内容的地址,因此&temp
是指向struct boggleDataNode
指针的指针,该struct boggleDataNode **
是<{1}}。
您的代码还存在其他问题,但这超出了您的问题的范围。我会指出你的输出循环非常非常错误。