Error en cadenas C...ayuda!!
Buenas. Tengo ke hacer una funcion en la ke dada una cadena de caracteres, copie desde la posicion "p", "n" caracteres a otra cadena.
He hecho esto:
[code]#include <stdio.h>
#include <string.h>
void mid(char *origen, char *destino, int n, int p){
int i;
origen = 0;
destino = 0;
for(i = 0; i < p; i++)
origen++;
for(i = 0; i < n; i++){
*destino = *origen;
destino++;
origen++;
}
printf("Destino: %s", destino);
}
int main(){
int n, p;
char *o, *d;
printf("Escribe cualquier texto: ");
scanf("%s", &o);
printf("Dame la posicion desde la que se va a copiar: ");
scanf("%d", &p);
printf("Dame el numero de caracteres que se van a copiar: ");
scanf("%d", &n);
mid(o, d, n, p);
return 0;
}[/code]
El programa se compila correctamente, pero no funciona correctamente. A ver si me podeis ayudar para encontrar donde esta el error...
Gracias.
He hecho esto:
[code]#include <stdio.h>
#include <string.h>
void mid(char *origen, char *destino, int n, int p){
int i;
origen = 0;
destino = 0;
for(i = 0; i < p; i++)
origen++;
for(i = 0; i < n; i++){
*destino = *origen;
destino++;
origen++;
}
printf("Destino: %s", destino);
}
int main(){
int n, p;
char *o, *d;
printf("Escribe cualquier texto: ");
scanf("%s", &o);
printf("Dame la posicion desde la que se va a copiar: ");
scanf("%d", &p);
printf("Dame el numero de caracteres que se van a copiar: ");
scanf("%d", &n);
mid(o, d, n, p);
return 0;
}[/code]
El programa se compila correctamente, pero no funciona correctamente. A ver si me podeis ayudar para encontrar donde esta el error...
Gracias.
Hola:
Tienes que arreglar algunas cosas.
Primero, en void mid(char *origen, char *destino, int n, int p) no puedes poner origen=0; destino=0;
Eso significa que pondras las dos cadenas a NULL, o sea, perderas la referencia a ellas.
Prueba esto:
void mid(char *origen, char *destino, int n, int p){
int i,k;
for ( i=p,k=0; k<n; k++, i++ )
destino[k] = origen[i];
}
al llamar a la funcion mid debes hacerlo con cadenas a las cuales ya les debes haber asignado memoria con el operador new.
Ejemplo:
char * cad1 = "cadena de prueba" , *cad2;
cad2 = new char[10];
//------------Llamada
mid(cad1,cad2,5,4);
Tienes que arreglar algunas cosas.
Primero, en void mid(char *origen, char *destino, int n, int p) no puedes poner origen=0; destino=0;
Eso significa que pondras las dos cadenas a NULL, o sea, perderas la referencia a ellas.
Prueba esto:
void mid(char *origen, char *destino, int n, int p){
int i,k;
for ( i=p,k=0; k<n; k++, i++ )
destino[k] = origen[i];
}
al llamar a la funcion mid debes hacerlo con cadenas a las cuales ya les debes haber asignado memoria con el operador new.
Ejemplo:
char * cad1 = "cadena de prueba" , *cad2;
cad2 = new char[10];
//------------Llamada
mid(cad1,cad2,5,4);
