文字列の長さを表示するためにstrlenを使用しようとしています。私はその2バイトの長さを知っています。しかし、strlenはゼロを返します。誰かがなぜ私を説明してくれますか?私を助けてください。2バイト文字列に対して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の文字列を理解できません。charの配列は '\ 0'です。 int16_tのバイト順を逆にして文字列に格納しようとしますか?いいえ。あなたの目的はなんですか ?私たちはもっとあなたを助けることができました。 – Stargateur