412. Fizz Buzz(C语言)

这道题是字符串数组,没有接触过,师兄都在说我大学是怎么上的.......

虽然看起来是一个数组,但是一个char[1]只能放一个字节也就是一个字符,比如F

所以输出的是一个字符串数组

从百度搜答案,师兄说你为什么不看discuss

于是找来了一个 研究了一天终于明白了 

char** fizzBuzz(int n, int* returnSize) {里面的**是和子函数返回的类型一致

/**
 * Return an array of size *returnSize.
 * Note: The returned array must be malloced, assume caller calls free().
 */
char** fizzBuzz(int n, int* returnSize) {
    *returnSize=n;//returnSize指向的值代表需要返回的数组的个数,虽然是在函数里面修改他的值,但是函数外面也是有变动的
    char buf[10];//定义一个字符数组用于存放‘Fizz’这种,buf[0]=‘F’,buf[1]='i'等,一个char字符是一个字节只能放一个字母
    char **re_p=(char **)malloc(n*sizeof(char *));//申请一个字符串数组,n行,每行一个char类型的指针
    int i=0;
    for(i=0;i<n;i++){
        if(((i+1)%3==0)&&((i+1)%5==0)){
            sprintf(buf,"%s","FizzBuzz");//虽然申请了char*但这只是指向字符串第一个元素的位置,需要把字符串赋值给buf,再让char*指向buf
        }else if((i+1)%3==0){
            sprintf(buf,"%s","Fizz");//字符串用双引号,字符用单引号
        }else if((i+1)%5==0){
            sprintf(buf,"%s","Buzz");
        }else{
            sprintf(buf,"%d",i+1);
        }
        re_p[i]=malloc(sizeof(buf));
        memcpy(re_p[i],buf,strlen(buf)+1);//strlen是指buf里字符串的长度,不是11,比如"Fizz",strlen(buf)=4,+1是为了把'\0'也放进来,不放进来就会出现乱码吧 我觉得
        memset(buf," ",11);//为buf清零初始化,将buf中当前位置后面的11个字节,用“ ”代替,并返回buf
    }
    return re_p;   
}




                
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值