字符串数组使用(二级指针的运用)

以一道题目为例

给你一个整数n,找出1到n各个整数的Fizz Buzz表示,并用字符串数组answer(下标从1开始)返回结果,其中:

answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数

answer[i] == "Fizz" 如果 i 是 3 的倍数

answer[i] == "Buzz" 如果 i 是 5 的倍数

answer[i] == i (以字符串形式)如果上述条件全不满足

char** fizzBuzz(int n,int* returnSize){}

问题关键就在字符串数组存放字符串这一块

char* c[1024];//表示的是字符串数组,但是需要初始化后才能使用的

所以需要使用二级指针的表达,另一种形式的字符串数组

char** c;//表示的也是字符串数组,但存储的方式就不同了

具体实现方式:

char** answer = (char**)malloc(sizeof(char*)*n);//给answer申请一个动态内存用来存放字符串
    answer[0] = malloc(sizeof(char)*n*10);//再赋予足够的大小存放字符串
    int i = 0;
    for(i = 1;i<n;i++)//动态内存申请是连续的,所以在相应的位置上存放对应的字符串
    {
        answer[i]=answer[0]+10*i;
    }

剩下的就是给对应的位置存放相应的字符串

for(i = 1; i <= n; i++)
    {
        if(i % 3 == 0 && i % 5 == 0)
        {
            strcpy(answer[i-1],"FizzBuzz");
        }
        else if(i % 3 == 0)
        {
            strcpy(answer[i-1],"Fizz");
        }
        else if(i % 5 == 0)
        {
            strcpy(answer[i-1],"Buzz");
        }
        else
        {
            sprintf(answer[i-1],"%d",i);
        }
    }

 

 

 

 

posted @ 2022-05-05 23:05  CCCAn  阅读(250)  评论(0)    收藏  举报