Non riesco a capire qual è il problema con il mio codice. Qui è il mio codice:Come utilizzare correttamente fget in una struttura?
#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;
}
il compito è abbastanza facile, è necessario fare un database ma i cani e proprietari possono avere due o più nomi, è per questo che cerco di usare fget. Ma l'uscita sembra terribile: (E la prima parte del nome del cane di solito è vuota)
You provided the following data:
Dog Name:
Owner Name: Doggy 1
Dog Age: 0
Dog Name: Big Dick
Owner Name: 2
Dog Age: 0
ho letto this ma non mi ha aiutato.
L'input che ho usato:
Doggy 1
Big Dick
2
Doggy 2
Si è conclusa dopo Doggy 2.
[Si prega di vedere questa discussione sul perché non trasmettere il valore restituito di 'malloc()' e famiglia in 'C'.] (Http://stackoverflow.com/q/605845/2173917). –
Puoi mostrare il tuo contributo, per favore? – Downvoter
@cad Aggiunto! Ma sembra che abbiamo trovato il problema principale. – 2b1c