Как найти длину массива char в c - PullRequest
6 голосов
/ 14 мая 2011

Я хочу найти длину этого:

char *s[]={"s","a","b"};

должно считаться 4 с / 0, но strlen или sizeof (s) / sizeof (char) дают мне неправильные ответы Как я могу найти это?

Ответы [ 6 ]

10 голосов
/ 14 мая 2011

Вы создаете массив char*, а не char.Вот почему strlen не будет работать.Используйте

sizeof(s) / sizeof(char*) //should give 3

Если вы хотите одну строку, используйте

char s[] = "sab";
7 голосов
/ 27 мая 2011

sizeof(s) / sizeof(s[0]) работает независимо от типа s.

3 голосов
/ 14 мая 2011

То, что вы определили, не является строкой, следовательно, нет завершающего символа NULL.Здесь вы объявили указатели на 3 отдельные строки.Кстати, вы должны объявить ваш массив как const char*.

1 голос
/ 14 мая 2011

Нет прямого способа определить длину массива в C. Массивы в C представлены непрерывным блоком в памяти.

Вы должны хранить длину массива как отдельное значение.

1 голос
/ 14 мая 2011

strlen работает, если вы заканчиваете свой массив нулевым символом. Вы не можете найти количество элементов в массиве char, если не отслеживаете его. т.е. сохраняем его в некоторой переменной, например n. Каждый раз, когда вы добавляете приращение члена n, и каждый раз, когда вы удаляете декремент n

0 голосов
/ 14 мая 2011

Зачем считать 4?у вас есть 3 указателя на символ в этом массиве, на большинстве 32-битных платформ он должен быть равен 12.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...