Tag: char

函数中char指针数组的大小

使用此代码: #include void printSize(char *messages[]) { printf(“%d”, sizeof(messages) / sizeof(char *)); } int main(void) { printf(“Size when through passing direct to function: “); printSize((char *[]){“Zero”, “One”, “Two”, “Three”}); printf(“\n”); printf(“Size when calculating in main: %d\n”, sizeof((char *[]){“Zero”, “One”, “Two”, “Three”}) / sizeof(char *)); return 1; } 我得到输出: Size when through passing direct to function: 1 […]

在C中将char *转换为wchar *

我想在C中将char*字符串转换为wchar*字符串。 我找到了很多答案,但大多数答案都是针对C ++的。 你可以帮帮我吗? 谢谢。

可移植代码 – 每个字符的位数

我知道C / C ++标准只保证每个字符最少 8位,理论上9/16/42 /其他任何东西都是可能的,因此所有关于编写可移植代码的网站都会警告不要假设8bpc。 我的问题是“非便携式”这是真的吗? 让我解释。 在我看来,有三类系统: 计算机 – 我的意思是台式机,笔记本电脑,服务器等运行Mac / Linux / Windows / Unix / * nix / posix /等等(我知道列表并不严格,但你明白了)。 听到任何这样的系统,其中char不是8位,我会感到非常惊讶。 (如果我错了,请纠正我) 带操作系统的设备 – 包括智能手机和此类嵌入式系统。 虽然我发现这样一个char ,其中char更多是8位,我不会感到非常惊讶,但我还没有听说过一个迄今为止的情况(如果我不知道,请再次通知我) 裸机设备 – 录像机,微波炉,旧手机等。在这个领域我没有丝毫的经验,所以任何事情都可能发生在这里。 但是,我真的需要我的代码在我的Windows桌面和微波炉之间跨平台吗? 我可能有两个共同的代码吗? 底线:是否有共同(超过%0.001)平台(上面的类别1和2),其中char 不是 8位? 我的上述猜测是真的吗?

为什么修改字符串的代码不起作用?

对于c风格的字符串,如何将字符指针指向的内存地址赋予char? 例如,在下面的示例中,我想将num更改为“123456”,因此我尝试将p设置为“0”所在的数字,并尝试用“4”覆盖它。 谢谢。 #include #include int main() { char* num = (char*)malloc(100); char* p = num; num = “123056”; p = p+3; //set pointer to where ‘4’ should be p = ‘4’; printf(“%s\n”, num ); return 0; }

如何在C中将char * str复制到char c ?

尝试将char *str复制到char c[]但是会出现分段错误或初始化程序错误。 为什么这段代码给我一个seg错误 ? char *token = “some random string”; char c[80]; strcpy( c, token); strncpy(c, token, sizeof c – 1); c[79] = ‘\0’; char *broken = strtok(c, “#”);

为什么我们需要在C中的字符数组末尾添加’\ 0’(null)?

为什么我们需要在C中的字符数组末尾添加’\ 0’(null)? 我在K&R 2(1.9字符数组)中读到过它。 书中找到最长字符串的代码如下: #include #define MAXLINE 1000 int readline(char line[], int maxline); void copy(char to[], char from[]); main() { int len; int max; char line[MAXLINE]; char longest[MAXLINE]; max = 0; while ((len = readline(line, MAXLINE)) > 0) if (len > max) { max = len; copy(longest, line); } if (max > 0) printf(“%s”, […]

C中的Char数组声明和初始化

我很好奇为什么在C中不允许这样做: char myarray[4]; myarray = “abc”; 这是允许的: char myarray[4] = “abc”; 我知道在第一种情况下我应该使用strcpy : char myarray[4]; strcpy(myarray, “abc”); 但是为什么不允许声明和后来的初始化,允许声明和同步初始化? 它与C程序的内存映射有关吗? 谢谢!

如何将char转换为二进制?

是否有一种简单的方法将字符转换为二进制表示? 我试图将消息发送到另一个进程,一次一个位。 因此,如果消息是“Hello”,我需要先将“H”转换为二进制,然后按顺序发送这些位。 存储在arrays中将是优选的。 感谢您的任何反馈,伪代码或实际代码将是最有帮助的。 我想我应该提到这是为了让学校的任务能够学习信号……这只是一种了解它们的有趣方式。 SIGUSR1用作0,SIGUSR2用作1,并且点是从一个进程向另一个进程发送消息,假装环境正在锁定其他通信方法。

int8_t vs char; 哪个是最好的?

我的问题可能会让你感到困惑,我知道两者都是不同的类型( signed char和char ),但我的公司编码指南指定使用int8_t而不是char 。 所以,我想知道,为什么我必须使用int8_t而不是char类型。 是否有使用int8_t最佳实践?

为什么SCHAR_MIN在C99中定义为-127?

C99的5.2.4.2.1将SCHAR_MIN定义为-127,将SCHAR_MAX定义为127. 8位有符号整数的范围不应该是-128到+127吗? 我的编译器的limits.h将SCHAR_MIN定义为(-1 << ((CHAR_BIT)-1)) ,如果CHAR_BIT为8,则为-128。 是否有任何理由为什么SCHAR_MIN被定义为-127而不是-128?