Я пытаюсь передать массив указателей на строки (имена) в функцию (foo) и читать из нее. Приведенный ниже код вызывает ошибку сегментации. Может кто-то, пожалуйста, помогите мне выяснить, почему этот код приводит к ошибке сегментации? Я хочу иметь возможность передавать имена массивов [] [] через функцию и работать с данными, как если бы я использовал имена [] [] вне функции.Передача массива указателей на строки в функцию
void foo(char *bar[]) {
printf("%s\n", bar[0]);
}
//---------------Main-------------
char args[][50] = {"quick", "brown", "10", "brown", "jumps", "5"};
int i = 0;
int numbOfPoints = (sizeof(args)/sizeof(args[0]))/3;
//array of all the locations. the number will be its ID (the number spot in the array)
//the contents will be
char names[numbOfPoints][100];
for(i = 0; i < numbOfPoints; i++) {
char *leadNode = args[i*3];
char *endNode = args[i*3 + 1];
char *length = args[i*3 + 2];
int a = stringToInt(length);
//add name
strcpy(names[i],leadNode);
}
//printing all the names out
for(i = 0; i < numbOfPoints; i++) {
printf("%s\n", names[i]);
}
foo(names);
lol Перед тем, как я отправил, я подвергал цензуре код на моей машине, но я забыл изменить его здесь. Хорошая благодарность. – bs7280
Я удивлен, что вы не получили ошибок компилятора. 'names [i]' несовместимо с 'char * []'. Вы должны изменить 'foo (char * bar [])' на 'foo (char * bar)'. –
У меня нет ошибок. Я запускаю его в блоках кода, и exe сбой. Это супер разочаровывает, потому что у меня нет никаких причин для ошибок. – bs7280