Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Guardar argumentos de main en cadenas

Estas en el tema de Guardar argumentos de main en cadenas en el foro de C/C++ en Foros del Web. Estoy intentando guardar los argumentos que se reciben en el main en dos cadenas en C con Netbeans de la forma: char *cadena1; char *cadena2; ...
  #1 (permalink)  
Antiguo 05/05/2017, 10:21
 
Fecha de Ingreso: junio-2009
Mensajes: 30
Antigüedad: 10 años, 7 meses
Puntos: 0
Guardar argumentos de main en cadenas

Estoy intentando guardar los argumentos que se reciben en el main en dos cadenas en C con Netbeans de la forma:
char *cadena1;
char *cadena2;

strcpy(cadena1,argv[1]);
strcpy(cadena2,argv[2]);

Y me da error:
Its no posible to limit these functions to a maximun buffer size.

He probado con strlcpy y no se muy bien como va, ni encuentro un ejemplo claro, pero no soy capaz de hacerla funcionar.

Podía hacerlo char a char, pero quería saber si hay alguna función que no sea strcpy y como funciona.
for(int i=0;i<strlen(argv[1]);i++){
cadena1[i]=argv[1][i];
}
for(int i=0;i<strlen(argv[2]);i++){
cadena2[i]=argv[2][i];
}
Saludos y gracias.

Última edición por antoniuskas; 05/05/2017 a las 10:56
  #2 (permalink)  
Antiguo 05/05/2017, 20:12
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 11 años, 7 meses
Puntos: 61
Respuesta: Guardar argumentos de main en cadenas

Usar "char *" va en la direccion correcta, pero esta incompleto.
char * indica que podrias tener un string, pero aun no tienes el espacio para copiarlo alli.
2 soluciones: pides espacio, con malloc o con new
o bien directamente indicas cuanto quieres tener, por ejemplo:

char cadena1[1000];

strcpy no deberia tener problemas si tienes espacio suficiente para almacenar, pero ahora, usando solo "char*" no lo tienes.
__________________
Visita mi perfil en LinkedIn

Etiquetas: argumentos, cadenas, main
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:41.