qq_56509179
77kki
2021-05-24 19:53
采纳率: 80%
浏览 28

C语言 指针 将字符串按长度排列

根据在网上找的代码自己改了一个 但是不知道哪里错了

求问(*p)[N]和*p[N]在写的时候有什么区别

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qq_46523755
    正在学C++ 2021-05-26 16:39
    已采纳
    #include<stdio.h>
    #include<string.h>
    #define M 5
    #define N 20
    void StrSort(char (*p)[N])
    {
        int i,j,k,x[M];		char t[N];
        for(i=0;  i<M;  i++ )
            x[i]=strlen(p[i]);
    
        for(i=0;  i<M;  i++  )      /////////////i<M
        {	k=i;
            for(j=i+1;  j<M;  j++ )
                if(x[j]<x[i])	k=j;
            if(k!=i)
            {	strcpy(t,p[i]);
                strcpy(p[i],p[k]);
                strcpy(p[k],t);
                x[k]=x[i];
            }
        }
    }
    int main()
    {
        char p[M][N];
        int i;
        for(i=0;i<M;i++)
            scanf("%s",p[i]);   /////////////////不要加\n
        StrSort(p);
        for(i=0;i<M;i++)
            printf("%s\n",p[i]);
        return 0;
    }
    /*
    12345
    1234
    123
    12
    1
     */
    
    点赞 评论
  • qq_46523755
    正在学C++ 2021-05-24 20:18

    一维数组作参数,可以这样写void func(char *p){  }

    也可以这样写void func(char p[]){  }  不需要指出数组大小

    但是二维数组作参数,必须要指出第二维大小,即void func(char (*p)[20]){  }表示传递一个二维数组,且第二维大小为20

    如果这样写void func(char  * p[20]){  }表示你传递一个一维数组,数组类型是char*

     

    点赞 评论
  • qq_56509179
    77kki 2021-05-26 15:11
    #include<stdio.h> 
    #include<string.h>
    #define M 5
    #define N 20
    void StrSort(char (*p)[N])
    {
    	int i,j,k,x[M];		char t[N];
    	for(i=0;  i<M;  i++ )
    		x[i]=strlen(p[i]);
    		
    	for(i=0;  i<M-1;  i++  )
    	{	k=i;
    		for(j=i+1;  j<M;  j++ )
    			if(x[j]<x[i])	k=j;
    		if(k!=i)
    		{	strcpy(t,p[i]);
    			strcpy(p[i],p[k]);
    			strcpy(p[k],t);
    			x[k]=x[i]; 
    		}
    	}
    }
    
    int main()
    {
    	char p[M][N];
    	int i;
    	for(i=0;i<M;i++)
    		scanf("%s\n",p[i]); 
    	StrSort(p);
    	for(i=0;i<M;i++)
    		printf("%s\n",p[i]); 
    	return 0;
     } 
     
    点赞 评论

相关推荐