我已经坚持了一段时间,有人可以帮忙吗? 我的链表代码适用于整数,但似乎不适用于字符串,它只打印最后一个条目,任何想法? 谢谢
#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;
}
}
答案 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;
}
}