我想從外部文件上傳列表到鏈接列表中,並從列表中訪問FILE中的所有字符。我到目前爲止,但它只包含我的輸入文件列表中的最後一個單詞。我不知道問題是什麼,我不確定該從哪裏出發。任何幫助將是偉大的!謝謝。我是上傳鏈接列表只抓取最後一個輸入文件內容
我的.txt文件,就像一堆無意義詞彙:
Ted
Greg
Shoe
Money
Apple
當我運行的程序列表中只包含了將蘋果。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 15
#define INPUT 1
#define OUTPUT 2
struct tree_node{
char string[MAXLEN+1];
struct tree_node *left_child, *right_child;
}*first = NULL;
int main(int argc, char *argv[])
{
char cell[MAXLEN];
int op;
FILE *pf;
FILE *out;
pf = fopen(("%s", argv[INPUT]), "r");
if(pf == NULL){
fprintf(stderr, "Error: File is Empty. \n");
return 0;
}else{
struct tree_node *temp;
struct tree_node *nn=(struct tree_node*)malloc(sizeof(struct tree_node));
while(!feof(pf)){
// fgets(&nn->string, MAXLEN, pf);
fscanf(pf, "%s", &nn->string); //I think this is where the problem is.
if(first != NULL){
temp = first;
while(temp -> right_child != NULL)
temp = temp -> right_child;
temp -> right_child = nn;
}else{
first = nn;
}
nn->right_child = NULL;
}
}
do{
printf("1.Display.\n2.Exit.\n");
printf("Selection?\n");
scanf("%d", &op);
switch(op)
{
case 1:display();
break;
}
}
while(op < 2 && op > 0);
}
int display()
{
struct tree_node *temp;
temp = first;
if(temp == NULL)
{
printf("EMPTY!\n");
return;
}
printf("Elements: \n");
while(temp != NULL){
printf("%s\n", temp -> string);
temp = temp -> right_child;
}
}
這很好。我對Coding很新,所以這對我來說很重要。我將研究這段代碼一段時間,以確保我明白到底發生了什麼。非常感謝你。如果您可以在代碼的重要方面包含一些簡短的評論,我將非常感激。我想確保我不會錯過任何重要的事情。 – Ted
@ user3308669不難一小片一小堆的代碼。你曾經想看到什麼嗎? – BLUEPIXY
當然可以。有趣的是,您爲left_child和right_child包含了按字母排序的算法。我需要這樣做,但我沒有在我的描述中包括這一點。謝謝。 – Ted