BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #94632同步于 2017/3/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【问题】各位吊大的大佬我又来了,leetcode蜜汁warning困扰一天

bluminFlower
2017/3/3镜像同步11 回复
412题Fizz Buzz 15的倍数输出FizzBuzz,3的倍数输出Fizz,5的倍数Buzz,其他第i个输出“i”。 我的代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> char** fizzBuzz(int n, int* returnSize) { char st[100][2] = {NULL}; char **result = (char**)malloc(n * sizeof(char*)); for (int i = 0; i < n; i++) { result[i] = (char*)malloc(sizeof(char)*10); if (((i+1) % 15) == 0) strcpy(result[i], "FizzBuzz"); else if (((i+1) % 5) == 0) strcpy(result[i], "Buzz"); else if (((i+1) % 3) == 0) strcpy(result[i], "Fizz"); else strcpy(result[i], itoa(i+1, st[i], 10)); } return result; } int main() { int n = 15; int *pn = &n; char **result = fizzBuzz(n,pn); for (int i = 0; i < n; i++) { printf("%s\n",result[i]); } return 0; } main函数自己加的,编译器完全ok啊,可是一提交出现warning: initialization makes integer from pointer without a cast [-Wint-conversion] 求赐教 更新 经过大家指教 我把可疑的数组删了,自己写了个itoa()函数,可是本地能跑没问题 提交结果是空。。 代码如下 #include <stdio.h> #include <stdlib.h> #include <string.h> char *itos(int n) { char *s = (char*)malloc(sizeof(char) * 3); if (n < 10) { s[0] = (char)(48 + n); s[1] = '\0'; } if (n > 10) { s[0] = (char)(n / 10 + 48); s[1] = (char)(n % 10 + 48); s[2] = '\0'; } return s; } char** fizzBuzz(int n, int* returnSize) { char **result = (char**)malloc(n * sizeof(char*)); for (int i = 0; i < n; i++) { result[i] = (char*)malloc(sizeof(char)*10); if (((i+1) % 15) == 0) strcpy(result[i], "FizzBuzz"); else if (((i+1) % 5) == 0) strcpy(result[i], "Buzz"); else if (((i+1) % 3) == 0) strcpy(result[i], "Fizz"); else strcpy(result[i], itos(i+1)); } return result; } int main() { int n = 15; int *pn = &n; char **result = fizzBuzz(n,pn); for (int i = 0; i < n; i++) { printf("%s\n",result[i]); } return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
bond1993机器人#1 · 2017/3/3
试了一下结果如下: test.cpp: In function ‘char** fizzBuzz(int, int*)’: test.cpp:6:28: warning: converting to non-pointer type ‘char’ from NULL [-Wconversion-null] char st[100][2] = {NULL}; ^ test.cpp:17:50: error: ‘itoa’ was not declared in this scope strcpy(result[i], itoa(i+1, st[i], 10)); ^
nuanyangyang机器人#2 · 2017/3/3
干嘛非得用malloc分配?每次都printf不行吗?
NachtZ机器人#3 · 2017/3/3
itoa 这个api在leetcode c中并不存在。你得自己写一个。 ``` warning: implicit declaration of function 'itoa' [-Wimplicit-function-declaration] ```
bingge机器人#4 · 2017/3/3
直接一个vector不好吗
bluminFlower机器人#5 · 2017/3/3
我去写了个 本地ok,传上去结果为空。。。 【 在 NachtZ 的大作中提到: 】 : itoa 这个api在leetcode c中并不存在。你得自己写一个。 : [md] : ``` : ...................
bluminFlower机器人#6 · 2017/3/3
那个字符串我删了,重写了itoa 【 在 bond1993 的大作中提到: 】 : 试了一下结果如下: : test.cpp: In function ‘char** fizzBuzz(int, int*)’: : test.cpp:6:28: warning: converting to non-pointer type ‘char’ from NULL [-Wconversion-null] : ...................
bluminFlower机器人#7 · 2017/3/3
暖神能具体说说嘛 我没懂你的意思 【 在 nuanyangyang 的大作中提到: 】 : 干嘛非得用malloc分配?每次都printf不行吗?
NachtZ机器人#8 · 2017/3/3
你认真看题目的注释,你没有放回你的指针指向数组的长度。 ``` /** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ ``` 还有,你这个手写的itoa写的真差... 【 在 bluminFlower 的大作中提到: 】 : 我去写了个 本地ok,传上去结果为空。。。
bluminFlower机器人#9 · 2017/3/3
确实差 请无视。 题目给的函数声明char**难道意思不是要返回一个双重指针呀? 我试着改成return result[*returnSize]依然是空 求再次指教 【 在 NachtZ 的大作中提到: 】 : 你认真看题目的注释,你没有放回你的指针指向数组的长度。 : [md] : ``` : ...................