Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 警告:格式指定类型';字符*';但参数的类型为';字符(*)[50]';_C - Fatal编程技术网

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].姓氏
将完成此任务。您需要从参数中删除
&