Может кто-нибудь объяснить, почему этот код:Почему эти две, казалось бы, одни и те же объявления приводят к различной длине строки?
char t1[20];
char t2[20];
memset(t1, 'B', sizeof(t1));
memset(t2, 'B', sizeof(t2));
printf("%lu\n", strlen(t1));
printf("%lu\n", strlen(t2));
результат:
22
21
Спасибо-х
Обратите внимание, что обе длины вы получаете больше, чем фактические массивы ... не имеют нулевой символ в массивы, чтобы отметить конец строки, поэтому 'strlen()' продолжает идти, пока не найдет один (где-то рядом с концом массива). – Dmitri
Потому что у вас нет нулевой строки, либо вы можете получить мусорные результаты. –
не может воспроизвести проблему. – user3078414