gpt4 book ai didi

c - 如何接受字符数组输入到 C 结构中?

转载 作者:行者123 更新时间:2023-11-30 19:18:14 25 4
gpt4 key购买 nike

我有这个结构,一个简单的结构,包含学生姓名和分数。当我尝试将用户输入读取到名称(字符数组)中时,我收到一条警告,指示以下行中的内容:

format %s expects char *, but has char*[20]

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

#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);
}
}

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

最佳答案

试试这个代码:

    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 ,数组名称本身提供地址。请记住,数组名称给出了数组的基地址。

关于c - 如何接受字符数组输入到 C 结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26994729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com