C语言,动态分配二维字符串数组


#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define   N 2 /*根据字符串的长度排序,由长到短*/

void sort(char *p[N]);

void main() {

#if 0     char str[N][50];/*保存字符串的二维数组,每个字符串的最大长度是50*/    

   int i;     char *p[N];/*声明指针数组,保存二维数组每一行的地址*/    

   printf("请输入%d个字符串:\n",N) ; #else  int i;  char *p[N];/*声明指针数组,保存二维数组每一行的地址*/  

   char **str=(char**)malloc(sizeof(char*)*N);  

   for( i=0;i<N;i++)   str[i] = (char*)malloc(sizeof(char)*50);  

   printf("请输入%d个字符串:\n",N) ;

#endif    

   for(i=0;i<N;i++)   scanf("%s",str[i]);     //   gets(str[i]);/*初始化二维数组*/

    for(i=0;i<N;i++)     {              

     /*初始化指针数组*/         p[i]=str[i];     }    

  sort(p);        system("pause"); }

 

void sort(char *p[N]) {    

  int i,j;    

  char *t;    

  

  printf("由长到短排序:\n");    

  for(i=0;i<N-1;i++)       

    for(j=i+1;j<N;j++)        {            

       if(strlen(p[i])<strlen(p[j]))             {                

        t=p[i];                

        p[i]=p[j];                

        p[j]=t;             }       

    }       

    for(i=0;i<N;i++)        

      puts(p[i]);/*输出排序后的结果*/

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM