首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C中接受字符数组输入到一个结构中?

如何在C中接受字符数组输入到一个结构中?
EN

Stack Overflow用户
提问于 2014-11-18 20:47:37
回答 4查看 16.4K关注 0票数 -1

我有这个结构,一个简单的结构,里面有学生的名字和分数。当我试图将用户输入读取到name(char数组)中时,我收到一条警告,指示以下行中的某些内容:

代码语言:javascript
复制
format %s expects char *, but has char*[20]

我知道这是因为char arrays不能在C中赋值,所以必须使用strcpy。这个question on SO有一个很好的推理。但是,如何修复程序中的警告?我不认为我可以在这里使用strcpy。

代码语言:javascript
复制
#include <stdio.h>


typedef struct _student
{
    char name[20];
    unsigned int marks;
} student;


void read_list(student list[], int SIZE);
void print_list(student list[], int SIZE);

int main()
{
    const int SIZE=3;
    student list[SIZE];

    //function to enter student info.
    read_list(list, SIZE);
    //function to print student info
    print_list(list, SIZE);
    return 0;
}

void read_list(student list[], int SIZE)
{
    int i;
    char nm[20];
    for (i=0;i<SIZE;i++)
    {
        printf("\n Please enter name for student %d\n", i);
        scanf("%s",&list[i].name);

        printf("\n Please enter marks for student %d\n", i);
        scanf("%u", &list[i].marks);
    }

}

void print_list(student list[], int SIZE)
{
    int i;
    printf("\t STUDENT NAME  STUDENT MARKS\t \n");

    for(i=0;i<SIZE;i++)
    {
        printf("\t %s \t %u\n", list[i].name, list[i].marks);   
    }
}

程序确实给出了正确的输出,但警告仍然存在。

EN

回答 4

Stack Overflow用户

发布于 2014-11-18 20:53:37

尝试以下代码:

代码语言:javascript
复制
    for (i=0;i<SIZE;i++)
    {
        printf("\n Please enter name for student %d\n", i);
        scanf("%s",list[i].name);

        printf("\n Please enter marks for student %d\n", i);
        scanf("%u", &list[i].marks);
    }

这是因为scanf语句中使用的&是为了获取地址。

在本例中,您使用数组名称,即name,并且数组名称本身提供了地址。记住,数组名称给出了数组的基地址。

票数 1
EN

Stack Overflow用户

发布于 2014-11-18 20:51:05

scanf("%s",&list[i].name);更改为scanf("%s",list[i].name);。删除&。因为基本上数组名称代表基址。不需要提及扫描字符串的数组地址。

票数 0
EN

Stack Overflow用户

发布于 2014-11-18 20:51:37

删除scanf中使用%s扫描字符串的&以消除警告。所以改变吧

代码语言:javascript
复制
scanf("%s",&list[i].name);

代码语言:javascript
复制
scanf("%s",list[i].name);

这是因为char数组的名称衰减为指向其第一个元素的指针

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

https://stackoverflow.com/questions/26994729

复制
相关文章

相似问题

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