看你代码原意,是想定义一个字符串数组strs。
但是你写的char *strs[5];表示的是一个维度为5的指针数组。
你可以把strs直接改成字符串数组,char strs[5][N],但你后面的函数参数类型也要跟着改。
如果你不想改动其他函数,还继续使用指针数组,也是可以的。
你可以用动态内存来写输入部分:(头文件添加malloc.h)
#include
#include
#define N 100//每个字符串最大长度
int main()
{
int i;
char *strs[5];
for(i=0;i<5;i++)
{
strs[i]=(char *)malloc(sizeof(char)*(N+1));
if(strs[i])
scanf("%s",strs[i]);
else
{
printf("错误内存申请失败!\n");
return 1;
}
}
return 0;
}
#include
#include
using namespace std; //以上为引用头文件
int main() //主函数
{
int i; //创建变量i
string str[5]; //定义数组str
void sort(string s[]); //定义函数sort
cout<<"Please input string:"<
cin>>str[i]; //输入5个字符串
sort(str); //调用str函数
cout<<"The sorted string is:"<
cout<
}
void sort(string s[])
{
int i,j;
string temp;
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if(s[j]>s[j+1]) //对每个进行比较
{
temp=s[j];
s[j]=s[j+1];//把小的数放在前面
s[j+1]=temp;
}
}
你没有为字符串分配空间,将main函数中的char *strs[5]修改为char strs[5][50];
//修改后的代码:
#include
#include
void sort(char *name[],int n);
void print(char *name[ ],int n);
int main()
{ char *strs[5],s[5][20];
int i;
for(i=0;i<5;i++)
strs[i]=s[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(char *name[],int n)
{ char * temp;
int i,j;
for(i=0; i{ for(j=0; 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{ printf("%s\n",name[i]);
}
}
简单修复了你的程序,有帮助请采纳哦。
#include
#include
const int CHANGDU = 50;
void sort(char name[][CHANGDU],int n);
void print(char name[ ][CHANGDU],int n);
int main()
{
char strs[5][CHANGDU];
int i;
printf("Please input 5 strings:\n");
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(char name[][CHANGDU],int n)
{
char temp[CHANGDU];
int i,j;
for(i=0; i{
for(j=0; j{
if(strcmp(name[j],name[j+1])>0)
{
strcpy(temp, name[j]);
strcpy(name[j], name[j+1]);
strcpy(name[j+1], temp);
}
}
}
}
void print(char name[ ][CHANGDU],int n)
{
int i;
for(i=0; i{
printf("%s\n",name[i]);
}
}