Ich habe Probleme mit dem Speichern einer Zeichenfolge - zum Beispiel eines Namens - in einem Strukturfeld. Ich habe gets()
und fgets()
beide verwendet, aber fgets()
funktioniert auch nicht richtig.Speichern von Strings in Strukturen mit gets()?
Ich bekomme nie die Chance, den ersten Angestelltennamen einzugeben; es springt direkt zum Mitarbeitercode und überspringt dann auch die Adresse. Aus irgendeinem Grund kann ich bei der Eingabe des zweiten Mitarbeiters sowohl den Namen als auch den Code eingeben und dann die Adresse erneut überspringen.
Wer weiß, was ich falsch mache?
#include <stdio.h>
typedef struct {
char name[150];
int code;
char add[300];
} tEmployee;
int main()
{
printf("How many employees would you like to register?\n");
int n;
scanf("%i", &n);
tEmployee employee[n];
for (int i = 0; i < n; i++)
{
printf("Name: ");
gets(employee[i].name);
printf("Code: ");
scanf("%i", &employee[i].code);
printf("Address: ");
gets(employee[i].add);
printf("%s\n", employee[i].name);
printf("%i\n", employee[i].code);
printf("%s\n", employee[i].add);
}
return 0;
}
Verwende niemals 'gets()'. –
[Verwenden Sie niemals gets()] (http://stackoverflow.com/q/1694036/10077). –
Denken Sie daran, * zwei * Tasten für die 'scanf's zu drücken? Die Nummer und die Eingabe? Enter erzeugt '\ n'. 'gets' /' fgets' konsumiert es und wartet somit nicht auf weitere Eingaben. Die Reparatur? Fügen Sie 'getchar();' nach jedem 'scanf' hinzu. –