gets
在函数neuePerson
, 中不起作用当它在for
循环中时,但后来我改变了它,现在编译器说没有定义。c gets/fgets不能正常工作
我试了fgets
,现在没有任何警告,但它仍然忽略fgets
,所以我不能在控制台中写任何东西。
在main
函数的gets
工作。我是一个有点困惑...:○
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "readline.h"
//typedef struct Person {
// char name[50];
// char unit;
// int number;
//} Person;
typedef struct person {
char name[50];
char unit;
int number;
struct person *next;
} Person;
void neuePerson(Person *firstPerson) {
time_t t;
time(&t);
srand((unsigned int)t);
while (firstPerson->next != 0)
firstPerson = firstPerson->next;
printf("Gib einen Namen ein \n");
fgets(firstPerson->name, 50, stdin);
firstPerson->number = rand() % 99 + 1;
firstPerson->unit = rand() % 3 + 65;
firstPerson->next = (Person*)malloc(sizeof(Person));
firstPerson = firstPerson->next;
firstPerson->next = 0;
}
void ausgabe(Person *anfang) {
while (anfang->next != 0) {
printf("Name: %s", anfang->name);
printf(" Abteilung: %c", anfang->unit);
printf(" Tel.Nummer: %i\n", anfang->number);
anfang = anfang->next;
}
}
int main() {
Person* pers1 = (Person*)malloc(sizeof(Person));
//Person* test = (Person*)malloc(sizeof(Person));
//gets(test->name, 50);
//printf("%s", test->name);
pers1->next = 0;
char z = 'n';
while (z != 'e') {
printf("[n]eue Person, [a]usgabe, [e]nde");
z = getchar();
if (z == 'n') neuePerson(pers1);
else if (z == 'a') ausgabe(pers1);
}
}
千万不要使用gets。它的危险功能http://stackoverflow.com/q/1694036/5339899 – JackVanier
请更具体。 “不起作用”从来不是足够的描述。你是如何得出结论认为它“不起作用”的?它会崩溃吗?错误的输出是否发生?可以 ..?准确描述预期行为和实际行为,包括您已经完成的任何调试结果。 – kaylum
不要用'/ * * /'评论代码,要么在每一行使用'//注释',要么使用#if 0' /'#endif' – chqrlie