Pensa a los arrays como punteros...
vos queres hacer algo asi:
char buf[58]; //reservo un array del tamaño q quiero.
memcpy(buf
,"abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+",58); //aclaro una cosa, el string ese q vos pones tiene tamaño 59, ya que como es un string, tiene un '/0' al final, pero copio solo lo q me interesa q es hasta el 58.
No probé compilar pero debería andar.
Un poco sobre memcpy... hay un ejemplo bastante claro al final...
http://www.cplusplus.com/reference/clibrary/cstring/memcpy/for (i=0; i<num; i++) {
vector[i]=c;
}
vector[i] = '\0'; //Aca el seg fault
Estoy casi seguro q da segmentation fault.
Pq al salir del ciclo i es igual a num, entonces te pasas en 1 el tamaño del arreglo, pero creo, no me puse a analizar bien.