为了账号安全,请及时绑定邮箱和手机立即绑定

c语言指针与数组的问题求解

c语言指针与数组的问题求解

C C++
Leo也叫做夹子 2016-11-27 15:38:45
#include<stdio.h> #include<string.h> #define MAX_LEN 10 #define N 150 void sortstring(char *ptr[],int n); void swap(char *ptr1,char *ptr2); int main() { int i,n; char name[N][MAX_LEN]; char*pstr[N]; printf("how many countries?:"); scanf("%d",&n); getchar(); printf("input their names\n"); for(i=0;i<n;i++) { pstr[i]=name[i]; gets(pstr[i]); } sortstring(pstr,n); printf("after sorted\n"); for(i=0;i<n;i++) { puts(pstr[i]); } return 0; } void sortstring(char *ptr[],int n) { int i,j;char *temp=NULL; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(strcmp(ptr[j],ptr[i])<0) { swap(ptr[j],ptr[i]); } } } } void swap(char *ptr1,char *ptr2) { char temp; temp=*ptr1; *ptr1=*ptr2; *ptr2=temp; }运行结果如图,程序的目的是想按字典顺序排列国家的名字,我编的程序问题在于只交换了第一个字母,而不是交换指向字符串的指针,不是通过数组的首地址可以调用出数组元素吗,那为什么还是只交换一个字母,问题到底出在哪里?求详细解答!
查看完整描述

3 回答

?
Object_is_null

TA贡献1条经验 获得超0个赞

void swap(char *ptr1,char *ptr2)

{

    char temp[N];

    strcpy(temp,ptr1);

    strcpy(ptr1,ptr2);

    strcpy(ptr2,temp);

}

//用一个字符数组做中间变量

查看完整回答
反对 回复 2016-11-28
?
qq_一尾沉默的鱼_0

TA贡献1条经验 获得超0个赞

把swap函数中的temp都换成*temp试试。char只能定义一个字符,不能操作字符串。
查看完整回答
反对 回复 2016-11-27
  • 3 回答
  • 0 关注
  • 1790 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信