我一直在尝试制作一个简单的程序来接受用户输入,直到他们按下完成。当他们这样做时,程序将打印出他们输入的所有内容。我觉得我已经完成了大部分工作,并且程序编译得很好,但是当我输入输入然后按完成时,它将输出完成的行数与输入输入的行数一样多。我已经画出来了,感觉这段代码应该可以工作。我对 C 也很陌生。所以如果有人可以让我知道什么是错的,甚至给我建议。
#include <stdio.h>
#include <stdlib.h>
struct llist {          
struct llist* nxt; 
char* string;
};              
void add(struct llist **tail, char* str) { 
    struct llist* n_ptr = (struct llist*)malloc(sizeof(struct llist));
    (**tail).string = str; 
    (**tail).nxt = n_ptr;   
        (*tail) = n_ptr; 
    n_ptr->nxt = (struct llist*)0;
};
void print(struct llist *Head) {
    struct llist* ptr;
    ptr = Head;
    while(ptr->nxt){ 
        printf("%s\n", ptr->string);
        fflush(stdout);
        (ptr = (ptr->nxt)); }
}
int main() {
    char* line = NULL;
    size_t size = 100; 
    char* done = "done";
    struct llist head; 
    struct llist* tail = (struct llist*)malloc(sizeof(struct llist));
    tail = &head; 
    do { 
    getline(&line, &size, stdin); 
    add( &tail , line ) ;   
    } while ( strncmp(line, done, 4) != 0 );
    print(&head);
    return 0;
}