Mira que es simple de pelotas esta función, y sin embargo cuando la ejecuto, me da un error presumiblemente de violación de memoria.
No se si es que la sintaxis del puntero no es correcta o que demonios pasa.
Muchas gracias a todos los que contesten.
[code language="C"]
#include<stdio.h>
#include<conio.h>
#define fin '\0'
void copiar_caracter(char *cad, char a, int n);
int main(){
printf(" Cadena original: %s\n Cadena modificada: ","danielorr");
copiar_caracter("danielorr",'t',4);
getch();
}//fin main
void copiar_caracter(char *cad, char a, int n){
int i=0;
while(cad!='\0' && i<n){
cad=a;
i++;
}
printf("%s",cad);
}//fin copiar caracter[/code]
You were attempting to write in memory you cannot write in. You are passing copiar_caracter a constant string, a literate string even, which will result in the attempt to write to it, which is just not possible. It would be the same as strcpy("first constant","constant two"): both are just useless.
If you use a non-literate, it will work:
[code language="C"]
#include<stdio.h>
#include<conio.h>
#define fin '\0'
void copiar_caracter(char *cad, char a, int n);
int main(int argc, char** argv){
char str[] = "zomg!";
printf(" Cadena original: %s\n Cadena modificada: ","danielorr");
copiar_caracter(str,'t',4);
// getch();
return 0;
}//fin main
void copiar_caracter(char *cad, char a, int n){
int i=0;
while(cad!='\0' && i<n) {
cad=a;
i++;
}
printf("%s",cad);
}//fin copiar caracter
[/code]
ha ha ha, TRUE! Thank you sandman, your help gives sense to my life :D
Thanks.