C programming, I dont really know what I did wrong, it would take the name and t
ID: 3821180 • Letter: C
Question
C programming, I dont really know what I did wrong, it would take the name and then just crash, may I please know what I did wrong, thanks!
void main()
{
char name[5][10];
char t[10];
load(name);
sort(name,t);
print(name);
}
void load(char *name[])
{
int i;
for(i=0; i<5; i++)
{
printf("Enter a name: ");
gets(name[i]);
}
}
void sort(char *name[],char t[])
{
int i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(strcmp(name[j],name[j+1])>0)
{
strcpy(t,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],t);
}
}
void print(char *name[])
{
int i;
for(i=0;i<5;i++)
{
printf(" ");
printf("%s", name[i]);
}
}
Explanation / Answer
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char name[5][10];
char t[10];
load(name);
sort(name,t);
print(name);
}
void load(char (*name)[10])
{
int i;
for(i=0; i<5; i++)
{
printf("Enter a name: ");
gets(name[i]);
}
}
void sort(char (*name)[10],char t[])
{
int i,j;
for(j=0;j<4;j++)
if(strcmp(name[j],name[j+1])>0)
{
strcpy(t,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],t);
}
}
void print(char (*name)[10])
{
int i;
for(i=0;i<5;i++)
{
printf(" ");
printf("%s", name[i]);
}
}
You should have written char (*name)[10] instead of char *name[] because the former one declares a pointer "name " pointing to the one dimensional character array of length 10. So now if you use name[i] it will be treated as a character array.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.