我在力扣上遇到了一个问题
但是我在vs上运行是没有任何问题的
但是vs也跟我说p缓冲区溢出
这是vs的代码
#include
#include
#include
#include
#include
char** fizzBuzz(int n, int* returnSize);
int main() {
int n = 0;
int len = 0;
int ret = 0;
char** p = NULL;
int* returnSize = &len;
scanf_s("%d", &n);
p = fizzBuzz(n, returnSize);
for (ret = 1; ret < len; ret++) {
printf("%s ", p[ret]);
}
return 0;
}
char** fizzBuzz(int n, int* returnSize) {
*returnSize = n + 1;
char** p = (char**)malloc(sizeof(char*) * (n + 1));
int ret = 0;
for (ret = 1; ret <= n; ret++) {
if (ret % 3 == 0 && ret % 5 == 0) {
p[ret] = "FizzBuzz";
}
else if (ret % 3 == 0) {
p[ret] = "Fizz";
}
else if (ret % 5 == 0) {
p[ret] = "Buzz";
}
else {
p[ret] = "i";
}
}
return p;
}
这是leetcode的代码
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
char ** fizzBuzz(int n, int* returnSize){
*returnSize = n + 1;
char **p = (char**)malloc(sizeof(char*) * (n + 1));
int ret = 0;
for(ret = 1;ret <= n;ret++){
if(ret % 3 == 0 && ret % 5 == 0){
p[ret] = (char*)malloc(sizeof(char) * 9);
p[ret] = "FizzBuzz";
}else if(ret % 3 == 0){
p[ret] = (char*)malloc(sizeof(char) * 5);
p[ret] = "Fizz";
}else if(ret % 5 == 0){
p[ret] = (char*)malloc(sizeof(char) * 5);
p[ret] = "Buzz";
}
}
return p;
}