小编som*_*one的帖子

c中的动态数组初始化

根据C99标准我们可以做到这一点

int n = 0;
scanf("%d",&n);
int arr[n];
Run Code Online (Sandbox Code Playgroud)

这是在c中创建动态数组的方法之一.现在我想将这个数组初始化为0这样

int arr[n] = {0};
Run Code Online (Sandbox Code Playgroud)

这里我的编译器产生错误.我想知道我们可以这样做吗?它是按照标准吗?在编译时,我们为数组提供了足够的内存,但是在编译时它是未知的.怎么回事?

c dynamic-memory-allocation

0
推荐指数
1
解决办法
1111
查看次数

找到下一个数字除以8?

嗨,这是一个面试问题.

对于任何给定的数字,计算可被8整除的下一个数字.

即如果给定的数字是43,我们的算法应该产生48结果.如果数字已被整除,8它应该说Number already divisible by 8并产生可被8整除的下一个数字.

我建议他们任何可被整除的数字8都有最后三位0(LSB + 2,LSB + 1,LSB).但我无法给出确切的解决方案.

我说的是解决这个问题的正确方法,还是我们可以采用更智能的解决方案?我需要通过位操作来做到这一点.

c algorithm bit-manipulation

0
推荐指数
2
解决办法
739
查看次数

SYSTEM调用执行后的分段错误

请告诉我我在做什么是对还是错.如果它是正确的那么为什么我得到分段错误?

#include<stdio.h>
#include<stdlib.h>

char* EncodeToBase64(char*);

int main()
{
    char str[24] = {0};
    char *output = NULL;
    output = malloc(56*sizeof(char));
    scanf("%[^\n]s",str);
    output = EncodeToBase64(str);
    printf("Back %s",*output);
    return 0;
}

char* EncodeToBase64(char *str)
{
    char buff[24];
    char *output = NULL;
    output = malloc(56*sizeof(char));
    memset(buff,'0',sizeof(buff));
    printf("EncodeToBase64 Function\n");
    sprintf(buff,"echo %s | openssl enc -base64",str);
    printf("%s\n",buff);
    output = system(buff);
    printf("Back %s",*output);

    return output;
}
Run Code Online (Sandbox Code Playgroud)

在纠正我的代码后,我又遇到了一个问题,每次我都会在我的字符串中添加这三个字符ô/+...如何获得确切的字符串?

c segmentation-fault

0
推荐指数
1
解决办法
1120
查看次数

sizeof运算符背后的逻辑

这里我们有sizeof运营商C.它返回数据类型的大小,

printf("%d",sizeof(some datatype));
Run Code Online (Sandbox Code Playgroud)

结果是4(取决于OS).

我想知道它是如何计算的.这个运营商背后的逻辑是什么?如果我请你为sizeof运营商编写代码.你的答案是什么?

注意:我想知道如何sizeof编写代码,以便能够计算大小.

我可能无法正确地提出我的问题,我在这里再试一次.

Write one function which we can use instead of sizeof operator.

c operators sizeof

-6
推荐指数
1
解决办法
764
查看次数