我想用strlen打印字符串的长度。我知道它的长度是2个字节。但是,strlen返回零。有人能解释我为什么吗?请帮帮我。strlen显示两个字节的字符串为0
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int16_t f = -105;
unsigned char *s = malloc(2+1);
uint16_t m = htons((uint16_t)f);
memcpy(s,(unsigned char*)&m, 2);
int16_t v = s[0] << 8 | s[1];
printf("%i \n",m);
printf("%i \n",v);
printf("%zu \n", strlen(s));
return 0;
}
打印字符串's'本身以查看会发生什么。 –
'm'不是一个应对它的值的'char *'不会使它成为一个字符串... – LPs
我不明白C中的一个字符串,它是一个由'\ 0'结尾的char数组。您尝试颠倒int16_t的字节顺序并将其存储在字符串中?没有意思。你的目的是什么?我们可以帮助你更多。 – Stargateur