字符串数组使用(二级指针的运用)
以一道题目为例
给你一个整数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); } }

浙公网安备 33010602011771号