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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8
61  Programación / Programación C/C++ / Re: No guarda la cadena dentro del vector en: 9 Febrero 2017, 22:27 pm
ah claro , me falto pedir memoria para los vectores que van dentro del vector ?
pero de todos modos si inicializara con el vector+1 con perro y depsues quisiera que el usuario ingresera una palabra da error... :/
62  Programación / Programación C/C++ / No guarda la cadena dentro del vector en: 9 Febrero 2017, 21:19 pm
Hola en este codigo me da un error cuando le pido al usuario que ingrese una cadena y que modifique la que yo ya ingrese que es "perro", el problema esta en estas lineas

Código
  1. printf("Ingrese una palabra: ");
  2. scanf("%s",(vector+1));

si no las pongo funciona bien, pero yo quiero que el usuario pueda modificar ese "perro" que yo di.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7. int i,j,a;
  8. char **vector;
  9.  
  10. vector = (char**)malloc(2*sizeof(char*));
  11.  
  12. *(vector) = "hola";
  13. *(vector + 1) = "perro";
  14. printf("Ingrese una palabra: ");
  15. scanf("%s",(vector+1));
  16.  
  17. puts("\nImprimiendo caracter a caracter:");
  18. for(i=0;i<2;i++)
  19. {
  20. for(j=0; j<strlen(*(vector+i)) ; j++)
  21. {
  22. printf("%c",*(*(vector+i)+j));
  23. }
  24. puts("");
  25. }
  26.  
  27. puts("\nImprimiendo completo:");
  28. printf("%s\n",*vector);
  29. printf("%s",*(vector+1));
  30.  
  31. free(vector);
  32.  
  33. return 0;
  34. }
  35.  
  36.  
63  Programación / Programación C/C++ / Re: otra manera de escribir *envp++ en: 9 Febrero 2017, 17:58 pm
Sos un master, muchas gracias por la explicacion, bless.
64  Programación / Programación C/C++ / Re: otra manera de escribir *envp++ en: 8 Febrero 2017, 21:59 pm
Vaya XD que enredo, al menos como que lo entendi un poco, amigo, eso del ensamblador que genera el codigo me podrias explicar como usarlo o como tengo que buscar para poder aprender a utilizarlo y yo mismo ir practicando con otras formas de codigo.
aunque ya me quedo claro que no es recomendable utilizar este tipo de notacion jajaj, saludos!
65  Programación / Programación C/C++ / Re: otra manera de escribir *envp++ en: 8 Febrero 2017, 19:36 pm
El _++ incrementa en el mismo momento. La diferencia con respecto al ++_ es que el post-incremento retorna el valor antiguo, y el pre-incremento retorna el nuevo valor.

Amigo pero si tu dices que ambos tienen igual importancia, si yo tuviera dos de esos en una operacion, cual se resuelve primero ? es decir si tuviera

a = ++b * b++;

o en este ejemplo que esta mas elaborado, como se resolveria ? (segun el compilador b queda con un valor de 13.)

Citar
int main()
{
  int a=1;
  int b = a++ + ++a * a++;
  printf("%d",b);
}
66  Programación / Programación C/C++ / Re: otra manera de escribir *envp++ en: 7 Febrero 2017, 22:46 pm
En estos casos, ten en cuenta el orden en que se llaman los operadores: http://es.cppreference.com/w/cpp/language/operator_precedence

Primero, el post-incremento(_++). Luego, la desreferencia(*).

Código
  1. *envp++;
Eso es lo mismo que:
Código
  1. *(envp++);
El post-incremento retorna el valor que tiene actualmente, e incrementa el valor de la variable (el retorno sigue siendo el antiguo).
Así pues, poner ese * ahí no hace nada funcional.

Hola, gracias por responder, pero no se supone que el post incremento es lo ultimo que se hace ? o sea si tengo *envp++ el compilador no le da preferencia al "*"?  es decir accede al * pero como no hay nada que hacer en el, luego pasa al post incremento... o estoy equivocado ?
67  Programación / Programación C/C++ / Re: otra manera de escribir *envp++ en: 7 Febrero 2017, 21:16 pm
Sí, así es.

Gracias master al fin pude entenderlo :D sos un crack!!!!, la ultima cosita y ahora si termino con esto :B

Me podrias decir que pasa en el compilador si tengo esto

Código
  1. while(*envp)
  2. {
  3. str = *envp;
  4. envp++;
  5. }
  6.  

En esta parte envp++; si yo la pusiera como *envp++; tambien funciona.

si lo analiso en el primer caso envp++; asigna el valor sin problema, pero en el segundo *envp++; como es post incremento primero el compilador toma en cuenta *envp (no se si sean los terminos pero es como que el compilador accede a ese valor y no hace nada mas)  y luego como no hay nada que hacer con *envp , incrementa envp una vez, al final en el 2do caso como que el compilador hace un paso de mas ?

Saludos master.
68  Programación / Programación C/C++ / Re: otra manera de escribir *envp++ en: 7 Febrero 2017, 21:00 pm
@MAFUS , una ultima cosa :D

en este codigo str = *envp++;

lo que primero esta haciendo es asignar el valor de *envp a str y luego incrementar envp una vez?
69  Programación / Programación C/C++ / Re: otra manera de escribir *envp++ en: 6 Febrero 2017, 23:19 pm
Muchas gracias por toda la ayuda!!
70  Programación / Programación C/C++ / Re: otra manera de escribir *envp++ en: 6 Febrero 2017, 18:23 pm
En referente a tu segunda pregunta: La instrucción sería ... *++envp .... De nuevo los operadores se evalúan de derecha a izquierda, por lo tanto ++ tiene prioridad sobre *. Como ++ en este caso es preincremento se ejecuta enseguida y después entrega el valor, que será pasado a * para conseguir el valor de la nueva dirección de memoria.

Buenos dias, gracias por responder de nuevo, pero una cosa que no logro entender es a que te refieres con de derecha a izq, ya que en ambos casos
*envp++
*++envp
la operacion ++ esta por delante del *  o sea en los dos casos tiene prioridad :s por que en la primera es entonces post incremento y en la otra pre ?

Ojala me entiendas, saludos!
Páginas: 1 2 3 4 5 6 [7] 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines