动态数组问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 03:02:54
输入num个人的名字,再输出
main()
{

char **name;
int num;
scanf("%d",&num);
name=(char**)malloc(sizeof(char*)*num);
int i;
for(i=0;i<=num-1;i++)
name[i]=(char *)malloc(sizeof(char)*10);
for(i=0;i<=num-1;i++){gets(name[i]);}

for(i=0;i<=num-1;i++)
printf("%s\n",name[i]);

for(i=0;i<=num-1;i++)
free((char*)name[i]);
free(name);

system("pause");
return 0;
}
为什么用gets时只输出两个?怎样改?
怎样访问name[i]中的第一个元素,如Ding yi中的D?
怎样排序?
duile

#include<stdio.h>
main()
{

char **name;
int num,i;

scanf("%d",&num);
name=(char**)malloc(sizeof(char*)*num);

for(i=0;i<=num-1;i++)name[i]=(char *)malloc(sizeof(char)*10);

scanf("%c");
for(i=0;i<=num-1;i++){printf("%d",i);gets(name[i]);}

for(i=0;i<=num-1;i++)printf("%s\n",name[i]);

for(i=0;i<=num-1;i++)free((char*)name[i]);

free(name);
system("pause");
return 0;
}
不是只有两个,而是少一个吧。。。
应该是下面的gets()把上面的回车读了进去。
*(name[i])应该是那个'D',字符型。
C里面有标准函数库,有一个strcmp()函数用于比较字符串大小,在string.h里,有大于小于等于0三种返回值。