Я пытаюсь создать простую программу, в которой хранятся десять «домашних животных» в массив. Каждый элемент содержит данные, к которым необходимо получить доступ через функции. По какой-то причине это, похоже, не работает так, как я ожидал. Кто-нибудь знает, почему программа запрашивает имя, а затем запускает оставшуюся часть программы, не запрашивая пользователя снова?Программа C с использованием структур не работает должным образом
#include<stdlib.h>
#include<stdio.h>
#include <string.h>
struct Pet {
char name[50]; //name
char type[50]; //type
char owner[50]; //owner
};
void setPetName(struct Pet *pet, char *name){
memcpy(pet->name,name, 50);
}
void setPetType(struct Pet *pet, char *type){
memcpy(pet->type,type, 50);
}
void setOwner(struct Pet *pet, char *owner){
memcpy(pet->owner,owner, 50);
}
char* getName(struct Pet *pet){
return pet->name;
}
char* getType(struct Pet *pet){
return pet->type;
}
char* getOwner(struct Pet *pet){
return pet->owner;
}
void printPetInfo(struct Pet *pet){
printf("Pet's name is %s, Pet's type is %s, Pet's owner is %s", pet->name, pet->type, pet->owner);
}
int main(){
struct Pet Pets[9];
int index;
char name[50], type[50], owner[50];
for (index=0; index<9; index++){
struct Pet pet;
printf("Please enter pet's name ");
scanf("%s\n", name);
setPetName(&pet, name);
printf("Please enter pet's type ");
scanf("%s\n", type);
setPetType(&pet, type);
printf("Please enter pet's owner ");
scanf("%s\n", owner);
setOwner(&pet, owner);
printPetInfo(&pet);
Pets[index]=pet;
}
return 0;
}
Вы не используете свой массив для домашних животных. – MTilsted
Проблема scanf - это еще одна проблема. Ответил здесь: http://stackoverflow.com/questions/9562218/c-multiple-scanfs-when-i-enter-in-a-value-for-one-scanf-it-skips-the-second-s – McKracken
Все функция принимает 'struct Pet pet' и должна принимать' struct Pet * pet'. Все в c передается по значению, поэтому структура почти всегда должна быть передана с помощью указателя. –