C语言问题 求指教

写一个程序把键盘输入的一组学生的姓名字符串存入一个字符型指针数组中,然后选择一种排序方法对其进行升序排序。要求字符型指针数组中的每个指针指向的空间都要动态申请。提示:可以... 写一个程序把键盘输入的一组学生的姓名字符串存入一个字符型指针数组中,然后选择一种排序方法对其进行升序排序。要求字符型指针数组中的每个指针指向的空间都要动态申请。提示:可以先用一个字符型数组过渡,接受键盘输入的字符串,再根据字符串的长度动态申请空间,并让字符指针数组的指针指向它,最后再把字符数组中的字符串拷贝到指针所指向的空间。
我的代码是:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
int i=0,n,j,len; scanf("%d",&n);
char a[n][20],t[20];
while(i<n){
scanf("%s",a[i]);i++;}
char *p[n];
for(i=0;i<n;i++){
len=strlen(a[i]);
p[i]=(char*)malloc(len*sizeof(char));
*p[i]=a[i];}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++){ {
if(strcmp(*p[i],*p[j])==1)
{strcpy(t,*p[i]);
strcpy(*p[i],*p[j]);
strcpy(*p[j],t);}}
}
for(i=0;i<n-1;i++)
printf("%s ",*p[i]);
printf("%s",*p[n-1]);
return 0;
}
哪里错了哈?求指教!!!
展开
 我来答
匿名用户
推荐于2016-05-10
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define n 5
int main(void){
int i = 0,  j, len; 
char a[n], t[20];
char *p[n],*pp;
while (i < n){
scanf("%s", a);

len = strlen(a);
pp = (char*)malloc(len*sizeof(char)+1);
strcpy(pp, a);
p[i++] = pp;
}
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++){
{
if (strcmp(p[i], p[j]) == 1)
{
strcpy(t, p[i]);
strcpy(p[i], p[j]);
strcpy(p[j], t);
} }
}
for (i = 0; i <= n - 1; i++)
printf("%s ", p[i]);

return 0;
}
追问
为什么 p[i]  不用 *p[i]呢?  不是应该要取它的值吗??
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式