В основном у меня есть этот рабочий код, который манипулирует массивом строк:
for (i = 0; i < numentries; i++)
if (strcmp(compare_str, strings[i]) < 0)
break;
for (j = numentries; j > i; j--)
strcpy(strings[j], strings[j - 1]);
strcpy(strings[i], compare_str);
strcat(strings[i], " ");
strcat(strings[i], whole_str);
numentries++;
Я хочу сделать так, чтобы я мог вызывать метод для выполнения таких манипуляций, как:
//call to method
compare(strings, numentries, compare_str, whole_str);
numentries++;
//method
void compare(char array[], int entries, char compare[], char whole[]) {
int i, j;
for (i = 0; i < entries; i++)
if (strcmp(compare, array[i]) < 0)
break;
for (j = entries; j > i; j--)
strcpy(array[j], array[j - 1]);
strcpy(array[i], compare);
strcat(array[i], " ");
strcat(array[i], whole);
}
Приведенный выше код не работает, я знаю, что вы должны использовать указатели, насколько я не совсем уверен, как. Как передать мой массив символов (строк), чтобы я мог манипулировать значениями внутри массива?
Я знаю, что это всего лишь фрагмент кода, но я подумал, что этого будет достаточно, чтобы решить мою проблему. если вам понадобится больше моей программы, дайте мне знать.
Он падает на линии
strcat(array[i], " ");
с сообщением
Программа получила сигнал SIGSEGV, Ошибка сегментации. 0x75bf8df6 в strcat () из C: \ Windows \ system32 \ msvcrt.dll n Один шаг до выхода из функции strcat, у которой нет информации о номере строки. 0x77776299 в ntdll! LdrGetDllHandleByName () из C: \ Windows \ system32 \ ntdll.dll