Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/03/2005, 12:46
Avatar de Eternal Idol
Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 9 meses
Puntos: 74
Cita:
Iniciado por jam1138
... momento que voy lento... me hablas en chino . En principio por ahí me dijeron que al inicializar un arreglo de la forma *arreglo éste se expandia conforme lo vaya requiriendo... lo cuál se escucha muy bonito ... pero.. me mintieron?? Odio que me mientan!!!
No es para nada cierto, cuando declaras una variable con * lo que haces es crear un puntero a ese tipo de variable (osea, en realidad un puntero son 4 bytes que contienen una direccion de memoria a la que apuntan). Tal vez te hablaban de la clase vector o algun contenedor de la Standard Template Library (STL) de C++.

char *caca = (char*)55; es valido sintacticamente pero estas apuntando a una direccion de memoria a la cual no tenes acceso, lo mismo pasa si declaras una variable char *ptr; no le das ningun valor y la pasas como parametro a una funcion, ¿Que hay en ptr? Un valor indefinido que no deberia utilizar jamas.

Cita:
Iniciado por jam1138
... perfecto... pero fuí incapaz de aplicar estas funciones para este ejercicio .. y mira que le dedique tiempo...
No tenes porque usarlas, no hace falta, las podes usar en otros problemas.

Cita:
Iniciado por jam1138
En las lecturas que consulte encontré acciones que no comprendo... como por ejemplo... inicializan una arreglo de la forma char *ptr;... luego... hacen algunas asignaciones... según yo entendí, estas asignaciones eran del tipo carácter... por ejemplo.. creo esto es válido ¿no?
Código:
ptr=strchr("Esto es una cadena", 'c');
y si imprimo a ptr con formato de cadena %s ... me imprime desde donde se encontró el carácter en adelante... ¿pero cómo puedo, en base a esto, sacar la posición donde encontró el carácter?? ... en un ejemplo ví que mandaba a imprimir la posición haciendo algo como
Código:
printf("%d", ptr-string);
e intente hacer esto asignandoselo a otra variable tipo entero.. pero nada.. algun error me daba que no era posible cambiar de char a int...
Eso es perfectamente valido claro, si te referis a la posicion decimal (13 en este caso) lo podes hacer restandole al resultado el puntero al primer caracter de la variable que se le pasa a strchr(), en ese caso es dificil de ver asi que doy otro ejemplo:

Código:
  char cadena[] = "hola a todos";
  char *ptr = cadena;
  char *buscar_t = strchr(ptr, 't');
  printf("Encontrado en posicion: %d", buscar_t - ptr);
Cita:
Iniciado por jam1138
También ví esto y no estendí:
Código:
*ptr = 0;
ptr++;
pero si ptr es un arreglo tipo char!!! ¿cómo hacen funciones matematicas con eso???... que alguien me explique!!!
A ver si tenemos el ejemplo anterior que te di, *ptr es igual a 'h' que es 104 en ASCII, entonces si hicieramos *ptr = 0; lo que conseguimos es escribir el numero 0 (terminador de cadena) en la primer byte (la variable es tipo char) del puntero. El ++ no se utiliza como funcion matematica sino como incrementador, se le incrementa en uno el valor del puntero que en esta caso deja de apuntar a la 'h' o 0 despues del *ptr = 0; y apunta a la 'o' que es el byte siguiente. Probalo con el sig. codigo:

Código:
  char cadena[] = "hola a todos";
  char *ptr = cadena;
  *ptr = 0;
  ptr++;
  printf("cadena modificada : %s", ptr);
Cita:
Iniciado por jam1138
1. Con estas dos funciones podré hacer este ejercicio??? .. no necesito otra donde.. ya sea me corte una cadena ó me copie parte de esta a otra... Ah!, me tope con strtok... logré dividir la cadena por espacios... creo me podrá servir ¿no?...[/code]
Lo mismo que en cuanto al strstr y strchr, el ejercicio ya la habias resuelto, si queres seguir probando seguro que encontraras cientos de formas diferentes de hacerlo. Tene en cuenta que strtok te modifica la cadena original.

Cita:
Iniciado por jam1138
2. qué debo entender cuando en lecturas me dicen "devuelve un puntero..." y "devuelve el índice..." ... vaya.. puntero? índice???... [/code]
El indice es el valor que se le pasa a un array (que en realidad es un puntero camuflado) para acceder a determinado elemento del mismo como por ejemplo ptr[2] accede al tercer elemento que vendria a ser en nuestros ejemplos 'a'.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 25/03/2005 a las 12:50