У меня есть короткий массив символов, называемый "массив". Я пытаюсь выделить c больше места, затем добавить больше символов в конец. по какой-то причине, когда я печатаю массив, эти дополнительные символы не отображаются, хотя они отображаются, когда я индексирую их по отдельности.
#include <stdio.h>
#include <stdlib.h>
int main(){
char *array = malloc(2);
array[0] = 'b';
array[1] = '\0';
char stringToAdd[] = "honey";
array = realloc(array, (16));
int pos;
//add stringToAdd into array one char at a time
for (pos = 0; pos < 5; pos++){
array[2+pos] = stringToAdd[pos];
printf("%d ", 2+pos);
printf("%c ", array[2+pos]);
printf("%s\n", array);
}
array[pos] = '\0';
int k = sizeof(array);
//should print out the string "bhoney" and its length
printf("%s, length = %d\n", array,k);
free(array);
return 0;
}
вывод:
2 h b
3 o b
4 n b
5 e b
6 y b
b, length = 8
также длина массива кажется равной 8, независимо от того, сколько места я пытаюсь переслать c к нему?