String Linked List仅打印最后一个输入

时间:2015-08-19 10:42:54

标签: c string linked-list

我已经坚持了一段时间,有人可以帮忙吗? 我的链表代码适用于整数,但似乎不适用于字符串,它只打印最后一个条目,任何想法? 谢谢

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

typedef struct node {
   char* val; 
   struct node* next;
 }node;

int main(){

// read text file
FILE * fp;
fp = fopen ("dict.txt", "r");

//  linked list

char i[10];

node* head = malloc(sizeof(node));
node* cursr=head;

while (fscanf(fp, "%s", i) !=EOF)
{
    fscanf(fp, "%s", i);
    //strcpy(cursr -> val,i);
    cursr -> val = i;
    printf("Read String1 |%s|\n", cursr->val );
    node* newnode = malloc(sizeof(node));
    cursr -> next = newnode;
    cursr = newnode;
}

cursr->next = NULL;
cursr=head;

while  (cursr -> next != NULL)
{
    printf("%s",cursr->val);
    cursr = cursr -> next;
}

}

1 个答案:

答案 0 :(得分:1)

试试这个。它应该工作。

#include<stdlib.h>
#include<stdio.h>
//#include "node.h"
#include <string.h>

typedef struct node {
   //char* val;
   char val[10];
   struct node* next;
 }node;

int main(){

// read text file
FILE * fp;
fp = fopen ("dict.txt", "r");

//  linked list

char i[10];
//int i;

node* head = malloc(sizeof(node));
node* cursr= head;

while (fscanf(fp, "%s", i) !=EOF)
{
    //fscanf(fp, "%s", i);
    strcpy(cursr -> val,i);
    //cursr -> val = i;
    printf("Read String1 |%s|\n", cursr->val );
    node* newnode = malloc(sizeof(node));
    cursr -> next = newnode;
    //cursr = newnode;
    cursr = newnode;
}

cursr->next = NULL;
cursr=head;

while  (cursr -> next != NULL)
{
    printf("%s",cursr->val);
    cursr = cursr -> next;
}

}
相关问题