Я думаю, что вы в значительной степени правы:
char a[] = "abcde";
printf("a[]: [%s] length:%d\n", a, strlen(a));
char* b = "fghij";
printf("*b: [%s] length:%d\n", b, strlen(b));
char* c = (char*)malloc(6);
char* d = c;
c = "klmno";
printf("*d = c: d is [%s] length:%d\n", d, strlen(d));
printf("*d = c: c is [%s] length:%d\n", c, strlen(c));
Выходы:
a[]: [abcde] length:5
*b: [fghij] length:5
*d = c: d is [] length:0
*d = c: c is [klmno] length:5
Примечание: Даже если strlen()
ищет символ NULL
, чтобы иметь возможность перебирать массив строк и считать символы, вхождение NULL
само по себе не добавляется к окончательной сумме, поэтому оно сообщает о 5 символах вместо 6.
Что касается того, что ваш ответ не был принят, возможно, существует какая-то другая форма представления, которую ваш учитель ожидал от вас для массива a
, вам может быть интересно поговорить об этом со своими коллегами, но я не думаю, чтоСправедливо утверждать, что вы дали неправильный ответ.