我想用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