根据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)
这里我的编译器产生错误.我想知道我们可以这样做吗?它是按照标准吗?在编译时,我们为数组提供了足够的内存,但是在编译时它是未知的.怎么回事?
嗨,这是一个面试问题.
对于任何给定的数字,计算可被8整除的下一个数字.
即如果给定的数字是43,我们的算法应该产生48结果.如果数字已被整除,8它应该说Number already divisible by 8并产生可被8整除的下一个数字.
我建议他们任何可被整除的数字8都有最后三位0(LSB + 2,LSB + 1,LSB).但我无法给出确切的解决方案.
我说的是解决这个问题的正确方法,还是我们可以采用更智能的解决方案?我需要通过位操作来做到这一点.
请告诉我我在做什么是对还是错.如果它是正确的那么为什么我得到分段错误?
#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)
在纠正我的代码后,我又遇到了一个问题,每次我都会在我的字符串中添加这三个字符ô/+...如何获得确切的字符串?
这里我们有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.