Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 24 Marzo 2011, 13:05 pm



Título: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: anonimo12121 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. }


Título: Re: Referencia de un char [] en una función.
Publicado por: Akai 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.


Título: Re: Referencia de un char [] en una función.
Publicado por: anonimo12121 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.


Título: Re: Referencia de un char [] en una función.
Publicado por: Akai 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


Título: Re: Referencia de un char [] en una función.
Publicado por: anonimo12121 en 24 Marzo 2011, 16:19 pm
Es que no uso printf y eso nunca XD. como sería en c++¿


Título: Re: Referencia de un char [] en una función.
Publicado por: Akai 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/


Título: Re: Referencia de un char [] en una función.
Publicado por: Samael.Black 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;
}


Título: Re: Referencia de un char [] en una función.
Publicado por: anonimo12121 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. }


Título: Re: Referencia de un char [] en una función.
Publicado por: KevinSec 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?


Título: Re: Referencia de un char [] en una función.
Publicado por: D4RIO 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  :-*


Título: Re: Referencia de un char [] en una función.
Publicado por: anonimo12121 en 25 Marzo 2011, 14:01 pm
Es esto? http://www.cplusplus.com/reference/iostream/stringstream/
Es que yo esto nunca lo había visto creo. xD



Mira un ejemplo de lo que quiero. Es que no se si me habéis entendido o no os entiendo yo xDD.
Si podéis fijaros en global me funciona.
Código
  1. #include <iostream>
  2. using namespace std;
  3. char hola[20];
  4. class clase{
  5.    private:
  6.    public:
  7.        clase();
  8.        //char hola[20];
  9.        void cambiar_nombre(char *name,int a,int b);
  10. };
  11. clase::clase(){
  12.    //strcpy(hola,"megaman-01.bmp");
  13. };
  14. void clase::cambiar_nombre(char *name,int a,int b){
  15.    char c[2];
  16.    itoa(a,c,10);
  17.    name[b]=c[0];
  18.    name[b+1]=c[1];
  19.    cout << c[0] << endl;
  20.    cout << c[1] << endl;
  21.    cout << name << endl;
  22.    cout << name << endl;
  23.  
  24. };
  25. int main(int argc,char *argv[]){
  26.    clase c;
  27.    strcpy(hola,"megaman-01.bmp");
  28.    c.cambiar_nombre(hola,15,8);
  29.    cout << "\n----------------------------"<< endl;
  30.    cout << hola;
  31.    cin.get();
  32.    cin.get();
  33.  


Título: Re: Referencia de un char [] en una función.
Publicado por: Akai en 25 Marzo 2011, 14:58 pm
Te lo puse en el segundo post, después que dijeras que "no usas printf y esas cosas". >,<

Hay que fijarse más


Título: Re: Referencia de un char [] en una función.
Publicado por: anonimo12121 en 25 Marzo 2011, 16:20 pm
Te lo puse en el segundo post, después que dijeras que "no usas printf y esas cosas". >,<

Hay que fijarse más
Estoy ciego perdido perdona XDD

Por cierto sabéis alguno de esto en español?

EDITO:
Usando sprintf me pasa lo mismo con la asignación.
Código
  1. #include <iostream>
  2. using namespace std;
  3. //char hola[20];
  4. class clase{
  5.    private:
  6.    public:
  7.        clase();
  8.        char hola[20];
  9.        void cambiar_nombre(char *name,int a,int b);
  10. };
  11. clase::clase(){
  12.    strcpy(hola,"megaman-01.bmp");
  13. };
  14. void clase::cambiar_nombre(char *name,int a,int b){
  15.    char c[2];
  16.    sprintf(c, "%d",a);
  17.    name[b]=c[0];
  18.    name[b+1]=c[1];
  19.    cout << c[0] << endl;
  20.    cout << c[1] << endl;
  21.    cout << name << endl;
  22.    cout << name << endl;
  23.  
  24. };
  25. int main(int argc,char *argv[]){
  26.    clase c;
  27.    c.cambiar_nombre(c.hola,15,8);
  28.    cout << "\n----------------------------"<< endl;
  29.    cout << c.hola;
  30.    cin.get();
  31.    cin.get();
  32.    return 0;
  33. }



EDITO 2:

Akai tu querias decir esto?
Código
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. int main(int argc,char *argv[]){
  5.    char t[2];
  6.    char cadena[20];
  7.    strcpy(cadena,"megaman-01.bmp");
  8.    sprintf(t,"%d",20);
  9.    cadena[8]=t[0];
  10.    cadena[9]=t[1];
  11.    cout << cadena;
  12.    cin.get();
  13.    return 0;
  14. }

EDITO 3: XDDD

Mi código de buscar carácter y modificarlo funciona solo me hace falta aprender lo de referenciar. Para poder modificar variables no globales con la función XDD.
Código
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. void acarga_imagen(char *name,int n, int v){
  5.    char t[2];
  6.    for(int i=0;i<n;i++){
  7.        for(int j=0;;j++){
  8.            if(name[j]=='.')break;
  9.            if(name[j]=='-'){
  10.                sprintf(t,"%d",v);
  11.                if(v<10)name[j+1]='0';
  12.                else name[j+1]=t[0];
  13.                if(v<10)name[j+2]=t[0];
  14.                else name[j+2]=t[1];
  15.                break;
  16.            }
  17.        }
  18.    }
  19.    cout << name;
  20. };
  21. int main(int argc,char *argv[]){
  22.    char nombre[]="megaman-01.bmp";
  23.    acarga_imagen(nombre,1,5);
  24.    //cout << nombre;
  25.    cin.get();
  26.    return 0;
  27. }code]

EDITO4: pfff.
He tenido que solucionar una cosa que me daba error por que se me cerraba el programa y erá al asignarle un valor a el puntero lo que he tenido que hacer es copiar el puntero a una array de la funcion y modificar la array .
CODE.
Código
  1. void sprite::acarga_imagen(char *name,int n){
  2.    char t[2];
  3.    char t2[20];
  4.    strcpy(t2,name);
  5.    for(int i=0;i<n;i++){
  6.        for(int j=0;;j++){
  7.            if(name[j]=='.')break;
  8.            if(name[j]=='-'){
  9.                sprintf(t,"%d",i+1);
  10.                if(i<10)t2[j+1]='0';
  11.                else t2[j+1]=t[0];
  12.                if(i<10)t2[j+2]=t[0];
  13.                else t2[j+2]=t[1];
  14.            }
  15.        }
  16.        ERROR << t2 << endl;
  17.        animacion[i]=SDL_LoadBMP(t2);
  18.        SDL_SetColorKey(animacion[i],SDL_SRCCOLORKEY,SDL_MapRGB(animacion[i]->format,ct.r,ct.g,ct.b));
  19.    }
  20. };


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: Akai en 29 Marzo 2011, 13:55 pm
Si quieres pasar por referencia en C++, es tan simple como:
Código
  1. void sprite::acarga_imagen(char* name,int & n){

De esta forma, pasas n por referencia. Fin del problema


Por otro lado, lo de sprintf, si, me refería a eso, PERO falla una cosa, sprintf si el número es menor que 10, no te va a imprimir 09 o 08, por tanto, no tienes dos carácteres en la cadena (entendiendo estos dos carácteres como representables (numeros, letras), y posiblemente tengas el final de cadena). Entonces, eso deberás gestionarlo tu (si num <10 haces de una forma, sino, de otra)


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: anonimo12121 en 29 Marzo 2011, 15:17 pm
Ya lo he solucionado no se que era lo que me pasaba XD siento las molestias gracias.

Código
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. class clase{
  5.    private:
  6.    public:
  7.        clase();
  8.        char nombre[100];
  9.        void acarga_imagen(char *name,int n);
  10. };
  11. clase::clase(){
  12.    strcpy(nombre,"megaman-01.bmp");
  13. };
  14. void clase::acarga_imagen(char *name,int n){
  15.    char t[2];
  16.    for(int i=1;i<n+1;i++){
  17.        for(int j=0;;j++){
  18.            if(name[j]=='.')break;
  19.            if(name[j]=='-'){
  20.                sprintf(t,"%d",i);
  21.                if(i<10)name[j+1]='0';
  22.                else name[j+1]=t[0];
  23.                if(i<10)name[j+2]=t[0];
  24.                else name[j+2]=t[1];
  25.                break;
  26.            }
  27.        }
  28.        cout << name << endl;
  29.    }
  30. };
  31. int main(int argc,char *argv[]){
  32.    clase c;
  33.    c.acarga_imagen(c.nombre,5);
  34.    cin.get();
  35.    return 0;
  36. }


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: Akai en 29 Marzo 2011, 15:29 pm
Un consejo, Xafi:
Si esta comprobación
Código
  1.  if(i<10)name[j+1]='0';
  2.                else name[j+1]=t[0];
  3.                if(i<10)name[j+2]=t[0];
  4.                else name[j+2]=t[1];

La sacases fuera del bucle, ganarías en velocidad. De hecho, podrías hacer dos bucles, uno de 0 a 9, otro de 10 en adelante.

Simplemente un consejo para evitar comprobaciones que no tienen sentido una vez pasas la frontera del 10


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: anonimo12121 en 29 Marzo 2011, 16:11 pm
Un consejo, Xafi:
Si esta comprobación
Código
  1.  if(i<10)name[j+1]='0';
  2.                else name[j+1]=t[0];
  3.                if(i<10)name[j+2]=t[0];
  4.                else name[j+2]=t[1];

La sacases fuera del bucle, ganarías en velocidad. De hecho, podrías hacer dos bucles, uno de 0 a 9, otro de 10 en adelante.

Simplemente un consejo para evitar comprobaciones que no tienen sentido una vez pasas la frontera del 10
Voy analizar bien lo que dices para ver si lo puedo optimizar como dices en lo escrito. pero creo que lo conforme esta los hace esa comparación cuando llega al '-'.
Gracias.

EDITO: vale creo que ya entendí XD
EDITO2: No se me ocurre otra forma XDDD
EDITO3: La única forma que se me acaba de ocurrir es esta.
Código
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. class clase{
  5.    private:
  6.    public:
  7.        clase();
  8.        char nombre[100];
  9.        void acarga_imagen(char *name,int n);
  10. };
  11. clase::clase(){
  12.    strcpy(nombre,"megaman-01.bmp");
  13. };
  14. void clase::acarga_imagen(char *name,int n){
  15.    char t[2];
  16.    for(int i=1;i<n+1;i++){
  17.        if(n<10){
  18.            for(int j=0;;j++){
  19.                if(name[j]=='.')break;
  20.                if(name[j]=='-'){
  21.                    sprintf(t,"%d",i);
  22.                    name[j+1]='0';
  23.                    name[j+2]=t[0];
  24.                    break;
  25.                }
  26.            }
  27.        }
  28.        else {
  29.            for(int j=0;;j++){
  30.                if(name[j]=='.')break;
  31.                if(name[j]=='-'){
  32.                    sprintf(t,"%d",i);
  33.                    name[j+1]=t[0];
  34.                    name[j+2]=t[1];
  35.                    break;
  36.                }
  37.            }
  38.        }
  39.  
  40.        cout << name << endl;
  41.    }
  42. };
  43. int main(int argc,char *argv[]){
  44.    clase c;
  45.    c.acarga_imagen(c.nombre,5);
  46.    cin.get();
  47.    return 0;
  48. }

PD: Creo que así me ahorra un "if".


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: Akai en 29 Marzo 2011, 16:35 pm
Si, a eso me refería. Y no, no te ahorras un if. Bueno, quizá en el código si, pero en ejecución ahorras iterar comprobando cada vez.


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: anonimo12121 en 29 Marzo 2011, 17:08 pm
Si, a eso me refería. Y no, no te ahorras un if. Bueno, quizá en el código si, pero en ejecución ahorras iterar comprobando cada vez.
Como puedo saber formas de optimizar mis códigos?


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: Akai en 29 Marzo 2011, 19:18 pm
Puff... Ahí ya no sabría decirte tan claro. Principalmente la experiencia va enseñándote esos truquillos con el tiempo. Por otro lado, tener en cuenta los costes asimptóticos de tus algoritmos también te va dando esa visión.

Luego hay libros que se meten bastante en ese tema pero el único que conozco es Code Complete 2, de Steve McConnel. En si es un libro dedicado a desarrollo de software, pero incluye un capítulo de optimización y "tunning" de código, (no tengo enlace para descargarlo, pero estoy seguro que no será dificil encontrarlo).

Por otro lado, quizá sea suerte mía que en la facultad haya tenido hasta ahora, en las asignaturas relacionadas con la programación, profesores bastante exigentes con el tema de los costes.


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: d(-_-)b en 29 Marzo 2011, 20:05 pm

Code Complete 2, de Steve McConnel. En si es un libro dedicado a desarrollo de software, pero incluye un capítulo de optimización y "tunning" de código, (no tengo enlace para descargarlo, pero estoy seguro que no será dificil encontrarlo).

No, no es dificil encontrarlo, y menos cuando esta en mi HD:  :xD

Code Complete 2nd edition by Steve McConnel

Torrent:

PDF: :http://torrents.thepiratebay.org/5028620/Code_Complete_2nd_edition_PDF_ebook.5028620.TPB.torrent
CHM: :http://torrents.thepiratebay.org/4168190/Code_Complete__2nd_Edition_(2004).chm.4168190.TPB.torrent

Mediafire:

PDF: :http://www.mediafire.com/?lztbze8hi6h0zy9
CHM: :http://www.mediafire.com/?4spc1qrqgwukvx0

saludos...


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: anonimo12121 en 29 Marzo 2011, 23:11 pm
Heheh ok gracias.


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: D4RIO en 30 Marzo 2011, 14:21 pm
A primera vista, el código NO es lindo, y es un híbrido entre C y C++. Pero fuera de eso, observa esta parte con algo de detenimiento y criterio:

Código
  1.        if(n<10){
  2.            for(int j=0;;j++){
  3.                if(name[j]=='.')break;
  4.                if(name[j]=='-'){
  5.                    sprintf(t,"%d",i);
  6.                    name[j+1]='0';
  7.                    name[j+2]=t[0];
  8.                    break;
  9.                }
  10.            }
  11.        }
  12.        else {
  13.            for(int j=0;;j++){
  14.                if(name[j]=='.')break;
  15.                if(name[j]=='-'){
  16.                    sprintf(t,"%d",i);
  17.                    name[j+1]=t[0];
  18.                    name[j+2]=t[1];
  19.                    break;
  20.                }
  21.            }
  22.        }

Es horrible y no tiene sentido. Verificas que el valor de "n" sea menor que 10, pero en realidad deseas verificar el de "i", porque haces el sprintf(t,"%d",i) y supones que si "i" es menor a 10, debes poner un "0".

Pero aún si hubieras puesto la "i" donde va, no hay necesidad de poner por un lado:

Código
  1.                    sprintf(t,"%d",i);
  2.                    name[j+1]='0';
  3.                    name[j+2]=t[0];

y por otro:

Código
  1.                    sprintf(t,"%d",i);
  2.                    name[j+1]=t[0];
  3.                    name[j+2]=t[1];

porque al fin y al cabo, sprintf puede poner el cero a la izquierda si se lo pides amablemente, y con eso quiero decir que si usas sprintf **leas la documentación** de tal función (y nada de 'no la encontre' porque está en todo internet): LINK (http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/).

Usa el formato "%02d" y evitarás ese condicional.


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: Akai en 30 Marzo 2011, 14:23 pm
es un híbrido entre C y C++

C++ contiene todo lo de C (cstdio, cstdlib etc etc etc), no existe un hibrido entre ambos si estás programando en C++


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: anonimo12121 en 30 Marzo 2011, 14:55 pm
Bueno si tendrías razón pero todavía no me  leído la función cuando me lo lea lo corregiré. xDD Saludos.
Y otra cosa si uso C++ podría usar todo lo de C sin problemas no? “como dice nuestro compañero Akai”.
C++ es C mejorado.


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: D4RIO en 30 Marzo 2011, 15:31 pm
Ese verso ya me lo sabía. Ok, es soportado dentro de C++, pero no forma parte de su idea.

C++ define un paradigma propio, horrible y sin sentido, casi Orientado a Objetos, con lo que puedes programar "Pensando C++" o no (lo cual sería mejor). Pero no quiero empezar flamewars. En mi opinión, trabajé con C y con C++ por años, y creo que ANSI C es la elección más sabia. A demás, creo que son bastante distintos.

Les dejo la opinión de Linus Torvalds (me incluyo, y es la opinion de la de la mayor parte de los gurús de C) AQUI (http://lwn.net/Articles/249460/).

Citar
C++ es C mejorado.
Yo lo describiría como una aberración

Saludos


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: Akai en 30 Marzo 2011, 16:09 pm
como dice nuestro compañero Akai”.
C++ es C mejorado.

NO, eso no lo digo yo. Yo digo que es AMPLIADO, es decir, C++ (C incrementado) es C + añadidos.

NO me vas a ver decir que tal o cual lenguaje sea mejor que otro por la AUSENCIA de herramientas (mirando desde C++ a C). Sería como decir que Java es mejor que C/C++ porque no tiene manejor manual de memoria.

Por otra parte, ni de broma pretendía empezar un flamewar por citar el hecho que C++ incluye a C para comentar que dicho modo "hibrido entre C y C++" no tiene demasiado sentido _(desde mi punto de vista)_ como tal.

Siento que se me haya malinterpretado.

EDIT: Añado:
Ok, es soportado dentro de C++, pero no forma parte de su idea.
En efecto, puede que no forme parte de su idea, y a planteamientos de dicho ámbido sobre el lenguaje no entro. Pero creo que pese a quizás no formar parte de su idea el hecho que como herramienta si es posible usarse, creo que debería comentarse.


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: D4RIO en 30 Marzo 2011, 16:21 pm
Al fin y al cabo, fue por describirlo como híbrido. Digamos C++ al estilo de C, lo cual como dice Linus, evitaría aunque sea por el solo hecho de mantener alejados a los programadores en C++ del proyecto. Cada cual con su maña.

Saludos


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: anonimo12121 en 30 Marzo 2011, 16:23 pm
Quería decir esto de akai.
Citar
Y otra cosa si uso C++ podría usar todo lo de C sin problemas no? “como dice nuestro compañero Akai”.

C++ es C mejorado es lo que he leido en otro lado o algo similar XD


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: D4RIO en 30 Marzo 2011, 16:30 pm
Seguramente de Stroustrup o algún fanático. C++ no puede ser mejorado porque, por empezar, propone otra forma de resolver los problemas. A demás del malnacido mangler y toda esa basura innecesaria.


Título: Re: Referencia de un char [] en una función.[Akai pasate por favor que modificado]xD
Publicado por: anonimo12121 en 30 Marzo 2011, 17:12 pm
pero programar con clases es divertido.