我一直在尝试制作一个简单的程序来接受用户输入,直到他们按下完成。当他们这样做时,程序将打印出他们输入的所有内容。我觉得我已经完成了大部分工作,并且程序编译得很好,但是当我输入输入然后按完成时,它将输出完成的行数与输入输入的行数一样多。我已经画出来了,感觉这段代码应该可以工作。我对 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;
}