【发布时间】:2021-06-17 21:35:23
【问题描述】:
所以我已经使用 union 尝试了这个问题,但是有一些我无法弄清楚的错误。 在这段代码中,我收到一个错误,上面写着“警告] 传递 'strcpy' 的参数 1 使指针从整数而不进行强制转换。”我不知道那是什么意思。请有人帮我解决这个问题... 所以代码如下:
#include<stdio.h>
#include<string.h>
union student
{
char name[25],regno[10],stream[3];
}s[25];
int main()
{
int i,n,j,temp;
printf("How many number of students are there?");
scanf("%d",&n);
printf("\n");
for(i=0;i<n;i++)
{
printf("Student Name: ");
scanf("%s",&s[i].name);
printf("Reg. No.: ");
scanf("%s",s[i].regno);
printf("Stream: ");
scanf("\n %d",&s[i].stream);
printf("\n");
}
for (i=0;i<n-1;i++)
{
for (j=0;j<n-1;j++)
{
if(strcamp(s[j].name,s[j+1].name)>0)
{
strcpy(temp,s[j].name);
strcpy(s[j].name,s[j+1].name);
strcpy(s[j+1].name,temp);
}
}
}
for (i=0;i<n;i++)
{
printf("%s\t%s\t%s\n",s[i].name,s[i].regno,s[i].stream);
}
return 0;
}
【问题讨论】:
-
什么是
strcamp()?你打算把union变成struct吗?scanf("\n %d",&s[i].stream)中的格式规范也错误。并删除前导换行符。 -
您在
strcpy(temp,s[j].name);中询问的警告temp是int temp。但是还有另一个问题,你交换的是名字而不是他们的其他细节:你应该交换整个struct。
标签: c unions alphabetical-sort