Ich bin ziemlich neu in C, und ich habe ein Problem mit der Eingabe von Daten in das Programm.Eingabe in C. Scanf wird vor. Problem
Mein Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int a;
char b[20];
printf("Input your ID: ");
scanf("%d", &a);
printf("Input your name: ");
gets(b);
printf("---------");
printf("Name: %s", b);
system("pause");
return 0;
}
Es ermöglicht die Eingabe-ID, aber es springt nur den Rest des Eingangs. Wenn ich die Reihenfolge so ändere:
printf("Input your name: ");
gets(b);
printf("Input your ID: ");
scanf("%d", &a);
Es wird funktionieren. Obwohl, ich kann nicht ändern Reihenfolge und ich brauche es so wie es ist. Kann mir jemand helfen ? Vielleicht muss ich einige andere Funktionen verwenden. Vielen Dank!
bekommt (3): „Die gets() Funktion nicht sicher verwendet werden kann, wegen seiner fehlenden der Überprüfung der Grenzen, und die Unfähigkeit, für das aufrufende Programm. verlässlich ermitteln Sie die Länge der nächsten eingehenden Zeile, die Verwendung dieser Funktion ermöglicht es böswilligen Benutzern, eine laufende Programmfunktionalität durch einen Pufferüberlaufangriff beliebig zu ändern.Es wird dringend empfohlen, dass die Funktion fgets() verwendet wird alle c Asses. (Siehe die FSA.) " Verwenden Sie es nicht. –
Kurz gesagt: Wenn Sie' gets' verwenden, wird fliegende tollwütige Angriff Ocelots Ihre Augenringe reißen. Also nicht. –
'scanf' ist ** böse * * - http://c-faq.com/stdio/scanfprobs.html – jschmier