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