#include <stdio.h>
#include<string.h>
void sort(const char *name[],int n);
void print(char *name[ ],int n);
int main()
{
char *strs[5];
int i;
printf("Please input 5 strings:");
for(i=0;i<5;i++)
{
scanf("%s",&strs[i]);
}
printf("Output:\nAfter thestrings are storted the result:\n");
sort(strs,5);
print(strs,5);
return 0;
}
void sort(const char *name[],int n)
{
const char * temp;
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(strcmp(name[j],name[j+1])>0)
{
temp=name[j];
name[j]=name[j+1];
name[j+1]=temp;
}
}
}
}
void print(char *name[ ],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%s\n",name[i]);
}
}
我的代码有什么问题吗?输完字符串之后程序就崩了。。跪求大佬
看你代码原意,是想定义一个字符串数组strs。
但是你写的char *strs[5];表示的是一个维度为5的指针数组。
你可以把strs直接改成字符串数组,char strs[5][N],但你后面的函数参数类型也要跟着改。
如果你不想改动其他函数,还继续使用指针数组,也是可以的。
你可以用动态内存来写输入部分:(头文件添加malloc.h)
#include <stdio.h>简单修复了你的程序,有帮助请采纳哦。
#include <stdio.h>