Saludos a todos, ahora me encuentro en un lio, tratando de hacer de forma dinamica el uso de cadenas. Ya que dada 2 o mas cadenas desde la linea de comandos, ocupo hacer cosas como copiar, concatenar o volver a capturar la cadena dentro del programa.
La forma de introducir la cadena despues de la compilacion es
C:\>programa.exe cadena1 cadena2
ejemplo que he estado testeando
C:\>programa.exe ana fantasia
El codigo es el siguiente:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
void copia(char *, char*);
char tamano(char *);
void capturar(char *);
int main(int argc, char **argv) {
/*Primer elemento es el origne, el segundo el destino*/
copia(argv[2],argv[1]);
printf("\nOrigen : %s",argv
[2]); printf("\nDestino : %s",argv
[1]); capturar(argv[1]);
printf("\nOrigen : %s",argv
[2]); printf("\nDestino capturado : %s",argv
[1]); return 0;
}
void capturar(char *cadena){
char *tmp;
printf("\nInserte la cadena : "); }
void copia(char *origen, char *destino) {
int i=0;
while(origen[i]){
destino[i]=origen[i];
i++;
}
if(tamano(destino)>tamano(origen))
while(destino[i]) {
destino[i]=0;
i++;
}
}
char tamano(char *palabra) {
int i=0;
while(palabra[i])
i++;
return i;
}
Primero presento problemas al cocatenar las cadenas, por lo que me puse a revisar las direcciones en que se estan guardando, al parecer estan consecuivas, bueno deje la funcion de concatenar pendiente. Pero por ahora ocupo de su ayuda para la copia y capturacion nueva.
Es decir, si yo puse "C:\>programa ana fantasia" el programa debe ser capaz de pasar la palabra1 (ana) copiarla a la palabra2(fantasia). Imprimiendo
p1: ana
p2: ana
Pero tambien debe podre pasar al palabra2(fantasia) a la palabra1(ana). Imprimiendo
p1: fantasia
p2: fantasia
Este paso no sucede asi. Por el manejo de memoria que no encuentro como solucionar.
Despues de haber hecho una copia de cadenas, independientemente si p1 paso a p2 o p2 paso a p1, debo tener la opcion de capturar nuevamente la cadena ya dentro del programa, ejemplo.
Desde la linea de comandos se mando
C:\>programa ana fantasia
p1: ana
p2: fantasia
Captura nueva dentro del programa: "el perico verde", imprime
p1: el perico verde
p2: fantasia
He tratado de usar realloc, malloc, y calloc, pero no me da algun resultado, por favor alguien me podria hechar la mano con estas 2 funciones.