LINUX.ORG.RU

Вопрос сишнику


0

0

Дан массив строк

char **x; ..... добавляем в массив произвольное количество строк .....

Каким образом можно получить размерность массива (т.е. сколько строк содержит)?

anonymous

Это не массив строк. Это переменная, содержащая адрес ячейки памяти, содержащей адрес ячейки памяти, содержащей значение типа char и это не шутка. Сам сообрази, что никакой размерности она не содержит и тебе придется самому выделять память и отслеживать размерности. Добро пожаловать в Си.

anonymous
()
Ответ на: комментарий от anonymous

:) Конечно оно так, но не все так плохо. Это можно истолковать и как массив указателей, если захотить. А контроль делать самому: например после последней строки записать NULL указатель, и при подсчете считать, пока не дойдет до него.

anonymous
()
Ответ на: комментарий от anonymous

ИМХО лучше struct завести
struct string_array
{
char** data;
int size;
};
И написать функции для нужных операций. А если не нужен произвольный доступ к элементам массива (т.е. по индексу), то лучше связный список сделать.

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

Да зачем самому с этим заморачиваться, время терять? Проще использовать что-то вроде glib или libslack.

anonymous
()
Ответ на: комментарий от anonymous

А еще проще вообще с С не заморачиваться (и часто лучше). По крайней мере есть C++ - с хорошей стандатной библиотекой и возможностью работы с любыми библиотеками на С. Может вообще стоит написть прогу на интерпретируемом языке?

Begemoth ★★★★★
()
Ответ на: комментарий от theSoul

Хмм. Хеши есть не только перле (а еще в Python, Lisp, Scheme, etc). А если человек не знает перла - то имхо проще будет освоить другой язык (типа python).

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

>А еще проще вообще с С не заморачиваться (и часто лучше). По крайней мере есть C++ - с хорошей стандатной библиотекой и возможностью работы с любыми библиотеками на С. Может вообще стоит написть прогу на интерпретируемом языке?

потом горе программисты так иполучаються - вообщем то

ты их не слушай пиши в С без плюсавости. Размерность? ты сам выделяешь память - что-то туда пихаешь и тд и тп. То есть тебе пройтись по нему посчитать не проблема, да есть strlen вообщем способов до дури.

alphex_kaanoken ★★★
()
Ответ на: комментарий от Begemoth

> А еще проще вообще с С не заморачиваться (и часто лучше).

Согласен, обычно на C++ и быстрее писать, и скорость весьма неплохая, если боков не напороть. Только что делать, если в kernel пишешь, или для embedded с ограничениями на память? там всю библиотеку стремно тягать, а в ядре и не выйдет... приходится C вспоминать. Там тоже можно писать хорошие программы, но лучше небольшие :)

Spectr ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.