elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD  (Leído 15,092 veces)
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
« en: 24 Marzo 2011, 13:05 pm »

Hola de nuevo. xD mi siguiente problema es el siguiente.
Si le asigno un valor de la forma que está, funciona, pero si lo hago de la forma que esta como comentario no va.
Código
  1. #include <iostream>
  2. using namespace std;
  3. void cambiar_nombre(char *name,int a,int b);
  4. void cambiar_nombre(char *name,int a,int b){
  5.    /*char c[2];
  6.     itoa(a,c,10);
  7.     name[0]=c[0];
  8.     name[b+1]=c[1];*/
  9.    name[0]='a';
  10.    name[1]='d';
  11. };
  12. int main(int argc,char *argv[]){
  13.    char hola[]="hola";
  14.    cambiar_nombre(hola,15,0);
  15.    cout << hola;
  16.    cin.get();
  17.    cin.get();
  18.    return 0;
  19. }
El objetivo es cambia 2 caracteres por otros distinto de la siguiente forma 01 02 03, quiero decir que es para automatizar un cargado de imágenes que se llamen por ejemplo megaman-01. pues en el programa meteré funcion(megaman-01, cantidad)... mediante bucle hace lo que quiera pero me falla esto.

En el caso de usar int si me funciona.

Código
  1. #include <iostream>
  2. using namespace std;
  3. void funcion(int *num,int v,int p){
  4.    int numerito[2];
  5.    numerito[p]=v;
  6.    numerito[p+1]=v+1;
  7.    num[0]=numerito[0];
  8.    num[1]=numerito[1];
  9. };
  10. int main(int argc,char *argv[]){
  11.    int ka[]={5,5};
  12.    funcion(ka,20,0);
  13.    cout << ka[1];
  14.    cin.get();
  15.    return 0;
  16. }


« Última modificación: 26 Marzo 2011, 00:22 am por Xafi » En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Referencia de un char [] en una función.
« Respuesta #1 en: 24 Marzo 2011, 14:04 pm »

Voy ahora un poco justo de tiempo para ponerme a mirar qué falla,  pero así a primera vista, me da que tu problema está en el uso de itoa:

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

Lo miraré luego si tengo un rato, mientras, te dejo una alternativa que uso yo en uno de mis programillas:
Código
  1.  
  2. char fnom[40];
  3. std::ofstream fichero;
  4. for(int i=0;i<nimg;i++){
  5. sprintf(fnom,"histogrames/%d.dat",i);
  6. fichero.open(fnom);
  7. do_something();
  8. fichero.close();
  9. }
  10.  
este código abre/crea ficheros en la carpeta histogrames con nombre 0.dat, 1.dat etc etc etc.

Para tu caso, te podría servir usar algo así pero primero obteniendo la parte sin números del nombre del fichero, para luego juntarlas usando sprintf.


« Última modificación: 24 Marzo 2011, 14:06 pm por Akai » En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Referencia de un char [] en una función.
« Respuesta #2 en: 24 Marzo 2011, 14:25 pm »

Voy ahora un poco justo de tiempo para ponerme a mirar qué falla,  pero así a primera vista, me da que tu problema está en el uso de itoa:

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

Lo miraré luego si tengo un rato, mientras, te dejo una alternativa que uso yo en uno de mis programillas:
Código
  1.  
  2. char fnom[40];
  3. std::ofstream fichero;
  4. for(int i=0;i<nimg;i++){
  5. sprintf(fnom,"histogrames/%d.dat",i);
  6. fichero.open(fnom);
  7. do_something();
  8. fichero.close();
  9. }
  10.  
este código abre/crea ficheros en la carpeta histogrames con nombre 0.dat, 1.dat etc etc etc.

Para tu caso, te podría servir usar algo así pero primero obteniendo la parte sin números del nombre del fichero, para luego juntarlas usando sprintf.
Lo que tengo entendido de lo que dices es que tenga por ejemplo una archivo .txt o de lo que sea con el nombre del fichero a cargar. Y que cambie solo el número. pero básicamente es lo mismo que yo digo. lo que yo digo es dar el nombre y un bucle recorre 1 vez el nombre y localiza la parte numérica , hasta ahí bien . lo que me falla es el pasar un int a  char. Que seria básicamente el int i del bucle.
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Referencia de un char [] en una función.
« Respuesta #3 en: 24 Marzo 2011, 15:53 pm »

Pasar de int a char[], te lo he puesto, pero no has mirado lo suficiente:

Código
  1. sprintf(fnom,"histogrames/%d.dat",i);
Ese es mi código. Que coloca en la cadena fnom "histogrames/(valor de i).dat

Código
  1. sprintf(fnom,"%d",i);
y con esa simple modificación imprimes un número en la cadena fnom.

Hay que mirar más xD
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Referencia de un char [] en una función.
« Respuesta #4 en: 24 Marzo 2011, 16:19 pm »

Es que no uso printf y eso nunca XD. como sería en c++¿
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Referencia de un char [] en una función.
« Respuesta #5 en: 24 Marzo 2011, 17:23 pm »

Eso está en C++. sprintf es una función de la biblioteca cstdio. Recordemos que C se puede catalogar como un subconjunto dentro de C++ si miramos que C++ incluye todo (o casi todo) lo de C.

Tu alternativa, posiblemente entre otras, usar sstreams:
Código
  1. #include <sstream>
  2. std::stringstream z;
  3. z << "hello " << 99;
  4.  
http://cplusplus.com/reference/iostream/stringstream/
En línea

Samael.Black

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: Referencia de un char [] en una función.
« Respuesta #6 en: 24 Marzo 2011, 18:39 pm »

Código:
#include <iostream>
#include <stdlib.h> // te falto agregar la librería stdlib.h
using namespace std;
void cambiar_nombre(char *name,int a,int b);
void cambiar_nombre(char *name,int a,int b){
    char c[2];
    itoa(a,c,10);
    name[0]=c[0];
    name[b+1]=c[1];
    name[0]='a';
    name[1]='d';
};
int main(int argc,char *argv[]){
    char hola[]="hola";
    cambiar_nombre(hola,15,0);
    cout << hola;
    cin.get();
    cin.get();
    return 0;
}
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Referencia de un char [] en una función.
« Respuesta #7 en: 24 Marzo 2011, 23:48 pm »

Pero me gustaría saber como cambiar un caracter a megaman-01 que sea convirtiendo un int a un char y asignandolo a la posición.

Si miráis este código podéis ver que el valor se le asigna dentro de la función pero fuera no.
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. void cambiar_nombre(char *name,int a,int b);
  5. void cambiar_nombre(char *name,int a,int b){
  6.    char c[2];
  7.    itoa(a,c,10);
  8.    name[b]=c[0];
  9.    name[b+1]=c[1];
  10.    cout << c[0] << endl;
  11.    cout << c[1] << endl;
  12.    cout << name[0] << endl;
  13.    cout << name[1] << endl;
  14.  
  15. };
  16. int main(int argc,char *argv[]){
  17.    char hola[]="hola";
  18.    cambiar_nombre(hola,15,0);
  19.    cout << "\n----------------------------"<< endl;
  20.    cout << hola;
  21.    cin.get();
  22.    cin.get();
  23.    return 0;
  24. }
« Última modificación: 25 Marzo 2011, 00:13 am por Xafi » En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
KevinSec

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Referencia de un char [] en una función.
« Respuesta #8 en: 25 Marzo 2011, 02:37 am »

Código:
#include <iostream>
#include <stdlib.h>
using namespace std;


char * cambiar_nombre(char *name,int a,int b){

for(int i =a; i<=b; i++)
 {
char tmp[30];
sprintf(tmp, "%s0%d", name, i);
cout << tmp << endl;
 }
 
};
int main(int argc,char *argv[]){
    char hola[]="hola";
    cambiar_nombre(hola, 0, 15);
    getchar();
    return 0;
}

¿Pides esto?
En línea

D4RIO


Desconectado Desconectado

Mensajes: 1.004


U N I X


Ver Perfil WWW
Re: Referencia de un char [] en una función.
« Respuesta #9 en: 25 Marzo 2011, 05:14 am »

@Samael.Black, "stdlib.h"?? O usas C, o usas C++, en el cual la biblioteca estándar de C se usa como <cstdlib>

@Xafi, Algunas cosas
Es que no uso printf y eso nunca XD. como sería en c++¿
Diría que no usas C ni C++ nunca, ni siquiera estás asignando correctamente las cadenas, ni declarandoles correctamente, sea para C o para C++. A demás, mencionas no usar "printf y eso" (¿?) y preguntas cómo sería en C++ cuando en tu primer "approach" usas "itoa"  ;-)  En fin, si vas a usar C++ como "lenguaje", podrías empezar por usar stringstream para convertir un entero a cadena, como te refirió Akai antes, que sería algo asi:

Código
  1. stringstream sstr;
  2. sstr.str().clear();
  3. sstr<<tuEntero;

Y luego:

Código
  1. sstr.str()

Para obtener un objeto string conteniendo el número como cadena.

Te daré una solución al estilo C++, pero tendrás que investigar cómo hacerlo y escribirlo por tu cuenta, de otra forma sentirías el "placer" de verlo funcionar sin el esfuerzo de aprenderlo, ni el entendimiento necesario  :¬¬

Primero, pasarás una referencia de la cadena a una función, no hablo de un puntero, sino una referencia, y usarás la clase string para trabajar con ella. Después, utilizarás stringstream para convertir tu número, modificarás el string, y notarás cómo al pasar una referencia, obtienes los cambios de regreso.

Cheers  :-*
« Última modificación: 25 Marzo 2011, 05:16 am por xD4RIOx » En línea

OpenBSDFreeBSD
Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Referencia a argumento en funcion.-
Programación Visual Basic
mdg 1 2,142 Último mensaje 9 Agosto 2007, 23:43 pm
por CeLaYa
funcion palindroma por referencia(con punteros)
Programación C/C++
roser24 1 5,745 Último mensaje 6 Mayo 2010, 03:01 am
por biribau
Hacer referencia al último archivo modificado en un directorio
Scripting
TheMaker 2 5,623 Último mensaje 4 Octubre 2010, 16:39 pm
por orvtech
Pasar matriz char a una función como referencia
Programación C/C++
KISKE 2 7,278 Último mensaje 18 Junio 2013, 13:07 pm
por KISKE
Problemas pasando por referencia un char...
Programación C/C++
jomoza 1 1,664 Último mensaje 20 Diciembre 2014, 22:47 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines