Я реализовал общий быстрый вид, и теперь я хочу принять массив из командной строки. Ниже приведена функция, которая должна копировать указатели символов из массива argv в базу. Я получаю ошибку сегментации. Копия работает нормально, когда я передаю адрес двух целых чисел.Общая копия с использованием указателя void
#include<stdio.h>
void copy(void *src, void *dest, int size)
{
char *s, *d;
int i;
s = src;
d = dest;
for(i = 0; i < size; i++)
d[i] = s[i];
}
int main(int argc, char *argv[])
{
void *base;
int i = 10;
int j = 20;
printf("%d, %d\n", i, j);
copy(&i, &j, sizeof(int));
printf("%d, %d\n", i, j);
copy(argv, base, sizeof(char *));
return 0;
}
Выход
10, 20
10, 10
Segmentation fault (core dumped)
'Base' не имеет пространство, выделенное для него ... вы пытаетесь выжать все из ARGV в ничто. Вам нужно «malloc». –