Ты почти у цели.У вас есть этот цикл:
for(int k=0;(char)pqr[i][k]!='\0';k++) ...
Как только этот цикл будет завершен, k
будет иметь длину строки.Так что это даст вам длину pqr[i]
(не включая нулевой терминатор):
int k;
for (k=0; pqr[i][k] != 0; k++)
;
cout<<"The length is "<< k <<endl;
Редактировать :
Вы добавили, что выхочу узнать размер, даже если нулевого терминатора там нет.Нет способа сделать это.Вам нужно будет иметь какой-то терминатор или хранить размер где-нибудь.Если вы используете vector<unsigned short>
, он сохранит размер для вас.Поскольку он также обрабатывает распределение и освобождение, это рекомендуемый выбор.
Обратите внимание, что в вашем выделении есть две ошибки:
pqr
- это массив указателей, но вы выделяете размер C*sizeof(unsigned short)
.вместо этого должно быть C*sizeof(unsigned short *)
.
Вы не выделяете память для нулевого терминатора в конце каждой строки: вы должны выделить (strlen(A[i])+1) * sizeof(unsigned short)
для каждой строки.