Ich kann nicht herausfinden, was das Problem mit meinem Code ist. Hier ist mein Code:Wie verwendet man Fgets in einer Struktur?
#include <stdio.h>
#include <stdlib.h>
#define N 20
typedef struct _dog {
char dogName[N],ownerName[N];
int dogAge;
} Dog;
int main() {
//Dynamic array
int size;
printf("Number of dogs: ");
scanf("%d", &size);
Dog *dog = (Dog*)malloc(sizeof(Dog)*size);
printf("\n");
//Input
int i;
printf("Please provide the data: [dogName][ownerName][dogAge] :\n");
for(i=0;i<size;i++) {
fgets(dog[i].dogName, sizeof(dog[i].dogName), stdin);
fgets(dog[i].ownerName, sizeof(dog[i].ownerName), stdin);
scanf("%d", &dog[i].dogAge);
}
//Output
printf("\nYou provided the following data:\n");
for(i=0;i<size;i++) {
printf("Dog Name: %s\nOwner Name: %s\nDog Age: %d\n", dog[i].dogName, dog[i].ownerName, dog[i].dogAge);
}
free(dog);
return 0;
}
Die Aufgabe ist ziemlich einfach, müssen Sie eine Datenbank machen, aber die Hunde und Besitzer von zwei oder mehr Namen haben kann, ist also, warum ich versuche fget zu verwenden. Aber der Ausgang sieht schrecklich: (Und der erste Hundenamensteil ist in der Regel leer)
You provided the following data:
Dog Name:
Owner Name: Doggy 1
Dog Age: 0
Dog Name: Big Dick
Owner Name: 2
Dog Age: 0
Ich habe this gelesen, aber hat mir nicht geholfen.
Der Eingang I verwendet:
Doggy 1
Big Dick
2
Doggy 2
Es beendet ist, nachdem Doggy 2.
[Bitte lesen Sie diese Diskussion darüber, warum nicht der Rückgabewert von 'malloc()' und Familie in 'C' umgewandelt werden soll. (Http://stackoverflow.com/q/605845/2173917). –
Können Sie bitte Ihre Eingabe zeigen? – Downvoter
@cad Hinzugefügt! Aber es scheint, wir haben das Hauptproblem gefunden. – 2b1c