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