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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 83
341  Programación / Programación C/C++ / Re: Duda al compliar en ubuntu en: 28 Febrero 2013, 20:51 pm
El problema es que por consola tienes que enlazar la librería math.h , en caso contrario te dice que no está definida, así que tendrás que compilar así:
Código:
gcc nombre_de_tu_fichero.c -lm
El "-lm" es para enlazar la librería math
Te dejo la referencia http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
342  Programación / Programación C/C++ / Re: Duda sobre funciones que devuelven punteros en: 28 Febrero 2013, 20:32 pm
Hola NathanD, supongo que es por hacer más flexible la utilización de la función, dado que strcat devuelve un puntero a la cadena concatenada(al contrario de lo que dices) que es el mismo que tu le especificas en el primer parámetro. Fíjate aquí:

http://www.cplusplus.com/reference/cstring/strcat/

Respondiendo a tu pregunta:

La diferencia es clara, tu función strcat no devolvería nada, y la strcat de la cabecera string un puntero a una cadena, por eso se definió así:
Código
  1. char * strcat ( char * destination, const char * source );

A efectos prácticos si yo quiero hacer esto con tu función no podría pues no devuelve el resultado esperado:
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char * argv [])
  4. {
  5. char cadena1[] = "hola";
  6. char cadena2[] = "adios";
  7. char *cadenaConcatenada = NULL;
  8. cadenaConcatenada = mi_strcat(cadena1,cadena2);
  9. return 0;
  10. }
Pero con la otra sí:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(int argc, char * argv [])
  5. {
  6. char cadena1[] = "hola";
  7. char cadena2[] = "adios";
  8. char *cadenaConcatenada = NULL;
  9. cadenaConcatenada = strcat(cadena1,cadena2);
  10. return 0;
  11. }

Como dije antes supongo que será por flexibilizar los usos de la función.

¡Un saludo!
343  Programación / Programación C/C++ / Re: ATOI + ITOA remake en: 24 Febrero 2013, 19:04 pm
Hola, que yo sepa atoi ya no se usa pues está obsoleta e itoa no está definida en el estándar de C como decía rir3760 en lugar de todo ello habría que usar:
Código
  1. long int strtol (const char* str, char** endptr, int base);

Referencia: http://www.cplusplus.com/reference/cstdlib/strtol/
Información de atoi obsoleta en la página de la libc: http://www.gnu.org/software/libc/manual/html_node/Parsing-of-Integers.html

Y para itoa se puede usar esto(que lo único que arregla es la portabilidad):
Código
  1. int sprintf ( char * str, const char * format, ... );

En teoría lo de las conversiones de bases debería funcionar con esas funciones.

PD: Digo esto porque tiene poco sentido ponerse a reinventar atoi e itoa ( si es para aprender y practicar si lo tiene ) cuando estas no son usadas o no deberían usarse.

¡Un saludo!
344  Programación / Programación C/C++ / Re: problema con escrbir fichero en: 9 Febrero 2013, 00:06 am
Pues a míme escribe el fichero sin problemas.
Código
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5.  
  6. int main ()
  7. {
  8.  
  9. ofstream F("texto.txt");
  10. string nombre;
  11. cin>>nombre;
  12. cout<<"hola como estas " << nombre << endl;
  13. F<<"hola como estas" << nombre << endl;
  14. return 0;
  15. }
  16.  
Código:
SAlida en pantalla:
leosan
hola como estas leosan

Process returned 0 (0x0)   execution time : 4.884 s
Press any key to continue.
Código:
Salida en fichero:

hola como estas leosan

Saluditos!.
Ídem.
345  Programación / Programación C/C++ / Re: Como manejar cadenas en c?? en: 7 Febrero 2013, 23:43 pm
Tienes que pasar el entero a cadena, versus ascii:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6. int p=12;
  7. char valor[10];
  8. char cad[100]={0};
  9. valor[10]=itoa (p,valor,10);
  10. strcat(cad,"El numero actual es: ");
  11. strcat(cad,valor);
  12. strcat(cad,"apresiamos");
  13. printf("%s",cad);
  14. return 0;
  15. }
  16.  
Saluditos!.
leosansan si te fijas esa función no está definida en el ANSI-C solo que es soportada por algunos compiladores así que es mejor no usarla. Mira aquí donde pone portabilidad:

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

¡Un saludo!
346  Programación / Programación C/C++ / Re: Imprimir caracteres en C[Solucionado] en: 7 Febrero 2013, 21:20 pm
Si algo ha cambiado parece,  no en la forma de hacerlo pero parece que en esta versión de codeblocks al guardar los archivos como decías antes los guarda como archivos sin extensión de texto plano, así que cuando los guardes ponle extensión .c (o cpp en el caso de C++) y ya sale coloreado y se puede compilar. En lo de los proyectos creo que sigue igual.
347  Foros Generales / Foro Libre / Re: ¿Cual es el peor miedo que os podeis imaginar?. en: 7 Febrero 2013, 20:46 pm
Os aseguro que el mayor miedo que existe es llevar casi 1 minuto bajo el agua y no tener aire ni poder salír  :-X , espero que no me vuelva a pasar nunca.
Uff si me has hecho recordadlo, menos mal que me cogieron a tiempo.
348  Programación / Programación C/C++ / Re: Imprimir caracteres en C en: 7 Febrero 2013, 20:44 pm
Pero algún error tiene que haber, cuando le das a compilar en la pestaña de abajo donde pone Build Log ¿que sale? Revisa el link que te puse antes.
349  Programación / Programación C/C++ / Re: Imprimir caracteres en C en: 7 Febrero 2013, 19:51 pm
Lo del botón Build puede ser porque te has bajado la versión de Codeblocks sin compilador y obviamente no lo encuentra. Prueba a bajarte la que tiene el compilador(la que pesa más) desde AQUÍ o bájate el compilador y configúralo con Codeblocks, lo primero es lo más fácil. En cuanto a lo de que se vea coloreado, eso solo sale cuando el archivo ya está guardado. Prueba creando un proyecto por ejemplo.

Hace poco un usuario también tuvo problemas y amchacon se lo solucionó , este es el link del post:
http://foro.elhacker.net/programacion_cc/duda_dev_c-t382282.0.html
¡Un saludo!
350  Programación / Programación C/C++ / Re: Como manejar cadenas en c?? en: 7 Febrero 2013, 19:31 pm
No tiene caso utilizar memset en la forma indicada ya que tiene el mismo efecto que la asignación:
Código
  1. cadena[0] = '\0';

Para verificar si el array almacena una cadena vacía basta con verificar el valor de su primer elemento:
Código
  1. if (cadena[0] == '\0'){
  2.   /* Cadena vacia */
  3. }else {
  4.   /* Al menos un caracter */
  5. }

Un saludo
El mismo efecto no tiene, aparentemente sí, pero en cadena[1] sigue estando la 'e' y así sucesivamente hasta el carácter nulo de final de cadena. Depende de lo que quieras hacer con la cadena utilizas una u otra manera solo que la que dice rir3760 te sustituye el primer carácter por el final de línea, es obvio que la cadena quedaría vacía. Y yo  sustituyo todos los elementos del array por 0. Así que quedaría igual solo que rir3760 tiene en el primer elemento un 0 y en los demás lo mismo: Caracter Nulo + "exto que desees" + Caracter Nulo , y yo en todos un 0, ya depende de lo que quieras hacer después con la cadena.

EDITADO:
Para convertir de entero a cadena no puedes hacer un cast directamente tienes que utilizar por ejemplo la función sprintf:
Código
  1. int p = 12;
  2. char cad[100];
  3. memset(cad, 0, 100);
  4. sprintf(cad, "El numero actual es: %dapresiamos", p);
  5. printf("%s", cad);
Despliega unos garabatos raros porque un int no contiene los valores numericos como cadena, en una cadena, cada byte es una letra, en un int los 4 bytes conforman el número de 32 bits. Entonces al esperar strcat una cadena, se pone a buscar el carácter nulo y hasta que no lo encuentra te concatena carácteres raros.

¡Un saludo!
Páginas: 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 83
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines