C 警告:格式指定类型';字符*';但参数的类型为';字符(*)[50]';
我不知道如何修复此警告,尤其是为什么它出现在我的代码中。在第一阶段,我的代码必须记录一些名字和姓氏,并且我使用了结构C 警告:格式指定类型';字符*';但参数的类型为';字符(*)[50]';,c,C,我不知道如何修复此警告,尤其是为什么它出现在我的代码中。在第一阶段,我的代码必须记录一些名字和姓氏,并且我使用了结构 #include <stdio.h> typedef struct STUDENT{ char surname[50]; char name[50]; } student; int main() { student a[30]; int aux; int i,j,n; printf("Number of studen
#include <stdio.h>
typedef struct STUDENT{
char surname[50];
char name[50];
} student;
int main()
{
student a[30];
int aux;
int i,j,n;
printf("Number of students: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Surname:");
scanf("%s",&a[i].surname);
printf("Name:");
scanf("%s",&a[i].name);
}
return 0;
}
#包括
类型定义结构学生{
查氏[50];
字符名[50];
}学生;
int main()
{
学生甲[30];
int aux;
inti,j,n;
printf(“学生人数:”);
scanf(“%d”和“&n”);
对于(i=0;i请不要在字符串中使用&
,因为姓氏
已采用scanf期望的格式
printf("Surname:");
scanf("%s",a[i].surname);
printf("Name:");
scanf("%s",a[i].name);
printf("Surname:");
scanf("%s",a[i].surname);
printf("Name:");
scanf("%s",a[i].name);
另外,请阅读为什么必须在scanf
中设置字符串长度
scanf
正在查找指向char
的指针,但在您的代码中有这样一个指针
scanf("%s",&a[i].name);
a[i].name
是一个char
数组,就scanf
而言,它与char*
相同,但您得到的是指向它的指针,因此最终得到的是char(*)[50]
。只要删除不需要的符号,您就可以删除警告并修复代码。an姓氏an姓氏an姓氏是char[50]
类型,因此它的地址将是char(*)[50]
类型。作为函数的参数,数组将衰减为指向它的第一个元素的指针。因此,a[i].姓氏
将完成此任务。您需要从参数中删除&