Но в строке *arr[1] = (char *)malloc(100); происходит ошибка Segmentation fault
Потому что arr[0] - указатель, *arr[0] - его разыменовывание. Так как вы не про инициализировали массив, в arr[0] лежит мусор. У вас во втором листинге правильный вариант есть arr[0] = (char *)malloc(10);.
Только если строки будут задаваться литералами, можно и не выделать под них память, а писать просто arr[0] = "string"; То как у вас сделано не правильно, если вы хотите литералы в динамической памяти хранить, то правильно будет так сделать:
PrayHero, Всё равно никто из пользователей не заметит, что сайт на си написан. Всё упирается в IO. Код на си обработает данные быстрее, но всё упрётся в сеть, пользователь вряд ли заметит. Я бы точно предпочёл сервер на php серверу на си. В сервере на си дыр, скорее всего, больше. Конечно и на си можно написать сверхбезопасное приложение, но сил на это уйдёт больше.
Потому что нет никаких преимуществ от написания веба на си, зато появляется куча проблем: возможность словить сегфолт, необходимость ручного управления памятью и работы с низкоуровневыми интерфейсами.
HoShik, Кстати, в си не обязательно делать явное приведение указателей типа void*. Можно писать так: board *leaderboard = malloc(sizeof(board));
Также вместо sprintf лучше использовать strcpy
Потому что глобальный массив следует создавать с помощью malloc, realloc вызывать перед добавлением нового элемента. У вас получается такая ситуация - вы перезаписываете никнейм в единственном элементе массива, а затем вызываете realloc.
reaget, В haskell return не работает так же, как в императивных языках. Функция readIntList должна вернуть список чисел, обёрнутый в IO. ints - список чисел, return в данном случае оборачивает его в IO. Рекомендую прочитать про монады отдельно. Например, функция преобразующая строку в список чисел не будет содержать return вообще.
jcmvbkbc, Я подумал, что ассемблер не родной из-за ошибки на данной команде: mov r7, #4. Сейчас запустил у себя, выдаёт другую ошибку. Признаю, был не прав.
Судя по всему, является хулиганством, так как смс от банка или пободного рода не приходило. Я на всякий случай задал вопрос, вдруг чего-то об атаках не знаю, просто ситуация довольно-таки странной показалась
arr[0] = (char *)malloc(10);
.Только если строки будут задаваться литералами, можно и не выделать под них память, а писать просто arr[0] = "string"; То как у вас сделано не правильно, если вы хотите литералы в динамической памяти хранить, то правильно будет так сделать: