返回信息流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;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #94632同步于 2017/3/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【问题】各位吊大的大佬我又来了,leetcode蜜汁warning困扰一天
bluminFlower
2017/3/3镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
试了一下结果如下:
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));
^
itoa 这个api在leetcode c中并不存在。你得自己写一个。
```
warning: implicit declaration of function 'itoa' [-Wimplicit-function-declaration]
```
我去写了个 本地ok,传上去结果为空。。。
【 在 NachtZ 的大作中提到: 】
: itoa 这个api在leetcode c中并不存在。你得自己写一个。
: [md]
: ```
: ...................
那个字符串我删了,重写了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]
: ...................
暖神能具体说说嘛 我没懂你的意思
【 在 nuanyangyang 的大作中提到: 】
: 干嘛非得用malloc分配?每次都printf不行吗?
你认真看题目的注释,你没有放回你的指针指向数组的长度。
```
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
```
还有,你这个手写的itoa写的真差...
【 在 bluminFlower 的大作中提到: 】
: 我去写了个 本地ok,传上去结果为空。。。
确实差 请无视。
题目给的函数声明char**难道意思不是要返回一个双重指针呀?
我试着改成return result[*returnSize]依然是空
求再次指教
【 在 NachtZ 的大作中提到: 】
: 你认真看题目的注释,你没有放回你的指针指向数组的长度。
: [md]
: ```
: ...................