У меня есть программа, которая принимает аргументы без опции (из командной строки) после аргумента параметра (-r, -d и т. Д.) И вставляет каждый аргумент без опции в массив. Максимальное количество необязательных аргументов, которые можно ввести, равно 25.Ошибка шины 10 при работе со строковым массивом - C
Но проблема в том, что при запуске программы появляется ошибка «Ошибка шины 10», и я не уверен, почему. смотрел на столько постов с подобными проблемами, но не могу показаться, чтобы исправить мое
код:.
void loop_namelist(int argc, char *argv[])
{
int index = 0;
--optind;
char *buff_namelist[25]; //the array that the arguments are stored in
*buff_namelist = malloc(25 * 25); //allocating some memory for the array
while (optind < argc) //loop until no arguments left
{
strcpy(buff_namelist[index], argv[optind]);
++index; //move to next index in array
}
}
Когда я бегу это так:
./program -r arg1 arg2
Я получаю автобус
Compile с 'НКА -Wall -g source.c -o program' (или включить все предупреждения и информацию об отладке в вашем компиляторе) и узнать, как использовать отладчик (например, 'gdb'). Также расскажите, какую операционную систему и компилятор вы используете. –
Вы знаете, что вы выделили место для указателя * first * в вашем указательном массиве? Поэтому, как только 'index' больше 0, это ** неопределенное поведение **. – WhozCraig
Я использую gcc-компилятор и те аргументы, которые вы сказали, но все равно ничего. Я использую MAC OS X. – pudumaster