谁能帮我修改一下一个非常简单的c语言小程序?

来源:百度知道 编辑:UC知道 时间:2024/07/05 00:50:21
我有一个程序,可以调,但是输入10个字符串回车后就弹出对话框说程序出现问题,可以帮我修改下吗?题目是:在主函数中输入10个等长的字符串,用另一函数对其排序,然后在主函数中输出这十个已排好序的字符串。谢谢了哈。
#include<stdio.h>
#include<string.h>
void main()
{ char *name[10];
void sort(char *name[]);
void print(char *name[]);
int i;
printf("请输入十个字符串,每输入一个用回车隔开:\n");
for(i=0;i<10;i++)
{
scanf("%s",&name[i]);
printf("\n");
}
sort(name);
print(name);
}

void sort(char *name[])
{ char *temp;
int i,j;
for(i=0;i<9;i++)
for(j=0;j<9-i;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 i;
for(i=0;i<10;i++)
print("%s\n",name[i]);
}
1楼的朋友,谢谢了,不过改了之后还是会错。

修改了几个地方。
使用了C++的一些用法,用VC运行程序。
#include<stdio.h>
#include<string.h>
void main()
{ char (*name)[10]=new char[10][10]; //要先分配内存,否则出错,并且注意指向二位数组指针的定义方法
void sort(char (*name)[10]);
void print(char (*name)[10]);
int i;
printf("请输入十个字符串,每输入一个用回车隔开:\n");
for(i=0;i<10;i++)
scanf("%s",name+i);
sort(name);
print(name);
}

void sort(char (*name)[10])
{ char temp[10];
int i,j;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
{
if(strcmp(name[j],name[j+1])>0)
{ strcpy(temp,name[j]);//复制串应该用int strcpy(*a,*b);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],temp);
}
}
}
void print(char (*name)[10])
{
int i;
for(i=0;i<10;i++)
printf("%d %s\n",i+1,name[i]);
}

print("%s\n",name[i]);
这句好像错啦,改成printf("%