Ich versuche Strlen zu verwenden, um die Länge der Zeichenfolge zu drucken. Ich kenne seine 2 Bytes in der Länge. Strlen gibt jedoch null zurück. Könnte mir bitte jemand erklären warum? Bitte hilf mir.Strlen zeigt 0 für zwei Byte Zeichenfolge
#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;
}
Drucken Sie die Zeichenfolge 's' selbst, um zu sehen, was passiert. –
'm' ist kein Stich, und sein Wert für ein 'char *' wird nicht zu einem String ... – LPs
ich verstehe einen String in C nicht, ist ein Array von Zeichen mit '\ 0' endet. Sie versuchen, die Bytereihenfolge eines int16_t umzukehren und in einer Zeichenkette zu speichern? Keine Ahnung. Was ist dein Zweck ? Wir könnten dir viel mehr helfen. – Stargateur