首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用结构的C程序不能正常工作。

使用结构的C程序不能正常工作。
EN

Stack Overflow用户
提问于 2014-10-27 00:57:08
回答 1查看 530关注 0票数 0

我正在尝试创建一个简单的程序,将十个“宠物”存储到一个数组中。每个结构包含必须通过函数访问的数据。由于某些原因,这似乎不像我所期望的那样。有谁知道为什么程序提示输入名称,然后在没有再次提示用户的情况下运行程序的其余部分?

代码语言:javascript
运行
复制
#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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-27 00:59:37

首先,不能在字符中保持字符串:

代码语言:javascript
运行
复制
char name, type, owner;

相反,您需要一个char数组(例如,char name[50]; )

然后扫描字符串的格式是%s,而不是&s

代码语言:javascript
运行
复制
scanf("&s\n", name);

最后,如果要打印字符串,请使用格式%s,而不是%c (%c是打印单个字符)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26579759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档