我最近开始学习C编程。我有一些Java经验,所以我想思考代码的方式。.我正在做的这个小事情正在使我丧命。我正在尝试制作一个从文本文件中读取行的程序->将其存储在单链列表中->打印出单链列表这是我到目前为止的代码:
typedef struct node {
char *data;
struct node *next;
} node;
node *start = NULL;
node *current;
void add(char *line) {
node *temp = malloc(sizeof(node));
// This line under I believe where my problem is...
temp->data = line;
temp->next = NULL;
current = start;
if(start == NULL) {
start = temp;
} else {
while(current->next != NULL) {
current = current->next;
}
current->next = temp;
}
}
这是我的功能,用于读取文件并将字符发送到添加功能
void readfile(char *filename) {
FILE *file = fopen(filename, "r");
if(file == NULL) {
exit(1);
}
char buffer[512];
while(fgets(buffer, sizeof(buffer), file) != NULL) {
// I've tried to just send i.e: "abc" to the add function
// which makes the program work.
// like: add("abc");
// my display method prints out abc, but when I'm sending buffer
// it prints out nothing
// Thing is, I've spent way to much time trying to figure out what
// I'm doing wrong here...
add(buffer);
}
fclose(file);
}
我敢肯定这是一个相当简单的问题,但是我花了太多时间在这个问题上。如果还有其他事情可以解决/可能会更好,我也很高兴为此退还费用:)
尝试:
temp->data = strdup(line);
到dup
licate(制作副本),在哪一行点。
否则,每行都指向,而每行都buffer
将被新行覆盖。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句