问题描述
所以我使用 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;
}
解决方法
你的错误写在注释中,这里是最终代码。
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
struct student
{
char name[25],regno[10],stream[3];
}s[25];
int main()
{
int i,n,j;
char temp[128];
printf("How many number of students are there?");
scanf("%d",&n);
printf("\n");
for(i=0;i<n;i++)
{
printf("Student Name: ");
scanf("%24s",s[i].name);
printf("Reg. No.: ");
scanf("%9s",s[i].regno);
printf("Stream: ");
scanf("%2s",s[i].stream);
printf("\n");
}
for (i=0;i<n-1;i++)
{
for (j=0;j<n-1;j++)
{
if(strcmp(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;
}