|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - m0skit0
Páginas: 1 ... 16 17 [18] 19 20 ... 100
426
« en: Martes 30 de Noviembre de 2010, 09:28 »
Si pudieras poner una parte del código donde te falla, a lo mejor llegamos a algo
427
« en: Martes 30 de Noviembre de 2010, 09:27 »
char[] es ya un puntero. No necesitas pasar char*[], que es un puntero de punteros a char. Si lo que quieres es modificar el array en la función y que se mantengan los cambios, con pasarlo como char[] te vale. Es decir: void encriptar(char frase[], int longitud, int n)
Con esto vas sobrado. Y ojo con los tamaños de los arrays como te indica alb. Saludos
428
« en: Lunes 29 de Noviembre de 2010, 23:09 »
En una función tienes que declarar el nombre del parámetro además de su tipo, es decir: int RecogeDatos(string nombre_del_parámetro)
En el prototipo no hace falta, pero en la implementación de la función sí.
429
« en: Lunes 29 de Noviembre de 2010, 22:18 »
Puede ser que endl hace que se vacíe el buffer y se "empujen" los datos a la salida.
430
« en: Lunes 29 de Noviembre de 2010, 22:09 »
Gracias, espero que tú también compartas con nosotros tus conocimientos
431
« en: Lunes 29 de Noviembre de 2010, 17:49 »
Todos los nuevos en C caen en el mismo problema Aquí estás declarando un puntero a una cadena de caracteres, PERO no reservas memoria para ello. Por tanto tienes 0 espacio para tus caracteres. Tienes que hacer algo como Para reservar memoria para 255 caracteres, o bien usar malloc() (y free()) para reservar memoria dinámicamente. De todas formas no necesitas char* para nada. Usa string, es mucho más cómodo.
432
« en: Lunes 29 de Noviembre de 2010, 13:57 »
No pones la declaración de ruta_archivo. Usa la clase string en vez de char*, que para eso tienes C++
433
« en: Lunes 29 de Noviembre de 2010, 11:47 »
Supongo que te das cuenta de que esto se publicó hace más de 4 años, y encima posteas tu correo para que te breen a spam. Dos en el mismo lote
434
« en: Lunes 29 de Noviembre de 2010, 11:43 »
¿Lo que te refieres es qué el valor se guarda en el espacio almacenado para la función? Algo parecido. En realidad es un espacio que comparten la función que llama y la función llamada. ¿ ese espacio tiene límite? Por supuesto, la memoria no es infinita. por que está definido como void (sin retorno) y no como un tipo de dato del C? No está definido como voidvoid inversa (char car) Claro que también aceptaría unas clasesitas de como se implementan las funciones C en padre ensamblador.. En IA32 (comúnmente llamada x86), el paso de argumentos a funciones se realiza a través de la pila. Esto es, se ponen en la pila los argumentos de la función en orden inverso a los declarados en C, usando la instrucción PUSH. En este caso, se pasa el char en la pila a inversa(). La función lo recupera con la instrucción POP. Acto seguido, inversa se llama a sí misma, con lo que inserta otro char en la pila usando igualmente PUSH, y la segunda llamada lo recupera igualmente con POP (ya que es el mismo código). Así se van acumulando los caracteres en la pila. Al volver, se leen los caracteres en orden inverso, y se libera el espacio en la pila al finalizar las funciones. Algunas veces el compilador también usa el registro EBP para indicar el comienzo de los argumentos para la función, evitando así acceder usando ESP (el puntero de pila). Las instrucciones PUSH y POP modifican ESP automáticamente. Para más detalles, mira el fichero ensamblador que genera el compilador para este ejemplo, así lo verás más claro. Cualquier duda te la intento aclarar. Saludos.
435
« en: Lunes 29 de Noviembre de 2010, 11:33 »
Sí, pero es mala programación. Deberías hacerlo tal que: char key_to_channel(uint16 mask) { char ret = '?'; switch(mask) { case 1: ret = 'A'; break; case 2: ret = 'D'; break; case 4: ret = 'G'; break; } return ret; }
436
« en: Domingo 28 de Noviembre de 2010, 14:09 »
Lo más probable es que sea una programación defectuosa (por ejemplo, no usar Option Explicit). También puede ser que se te hayan corrompido las librerías de VB6, aunque lo dudo mucho. Si pudieras poner una parte del código donde te falla, a lo mejor llegamos a algo. Lo que sí dudo es que sea un virus que sólo afecte a tu programa...
Saludos.
437
« en: Sábado 27 de Noviembre de 2010, 21:53 »
Eso que yo sepa sólo puedes hacerlo de 2 formas: - Creando un buffer para tus datos de salida, los almacenas allí y luego los vuelcas a un fichero
- Creando un fichero temporal donde vayas guardando los datos, y luego guardarlo o borrarlo
438
« en: Sábado 27 de Noviembre de 2010, 21:51 »
439
« en: Sábado 27 de Noviembre de 2010, 16:34 »
char texto = main(); Esto no tiene ningún sentido. Mejor explícanos con más detalle qué quieres hacer.
440
« en: Sábado 27 de Noviembre de 2010, 15:47 »
No lo he probado, pero debería funcionar: #include <stdio.h> void relle_vector(int vector[]) { } int menor(int vector[]) { int menor; if(vector[0]>vector[1]) { menor=vector[0]; } else { menor = vector[1]; } return menor; } int main(int argc, char *argv[]) { int vector[2]; printf("Escriba dos numeros"); relle_vector(vector); printf("El numero menor es %dn", menor (vector )); return 0; }
Un vector y un puntero son lo mismo en C.
441
« en: Sábado 27 de Noviembre de 2010, 15:43 »
-1 = 0xFFFFFFFF
442
« en: Viernes 26 de Noviembre de 2010, 09:36 »
no me reconoció la librería conio.h, ni tampoco la función getche sino getchar por cierto el system("pause") tampoco me jaló solo una duda, si char solo tiene límite de un 1byte, ¿por qué me recibe una cadena larga de hasta 20 caracteres? Él usa Windows y tú al parecer no. Esas funciones no son estándar, de ahí mi comentario anterior: Personalmente, no usaría conio.h, pero eso ya es decisión de cada uno. solo una duda, si char solo tiene límite de un 1byte, ¿por qué me recibe una cadena larga de hasta 20 caracteres? Es un char local a cada llamda de función. Mientras la función no retorne, ese valor sigue almacenado en la pila temporal de la función. Si quieres entenderlo más en profundidad, tendría que explicarte cómo se implementan las funciones C en ensamblador, pero para ello tienes que saber un poco de arquitectura de computadores. Si te interesa me dices y te lo cuento.
443
« en: Viernes 26 de Noviembre de 2010, 09:26 »
No hay bien que por mal no venga en este caso
444
« en: Jueves 25 de Noviembre de 2010, 16:29 »
Es lo mismo que te ha puesto Epa dos posts más arriba. De todas formas, enhorabuena.
445
« en: Miércoles 24 de Noviembre de 2010, 18:10 »
Ok, pero antes lo habías formulado mal
446
« en: Miércoles 24 de Noviembre de 2010, 17:46 »
Buenas Epa. Creo que te contradices, o no te he entendido: La idea es hace una funcion que capture un caracter con getche(), si este es '.' entonces retorna, sino se llama a si misma, imprime el caracter y retorna De esa forma cuando se ingrese el . se va a ir saliendo de las funciones  Y efectivamente, getche() existe en conio.h. Mis disculpas. Pero creo que te equivocas, sí lee de la entrada estándar, sólo que no hace eco del carácter en pantalla. Personalmente, no usaría conio.h, pero eso ya es decisión de cada uno. Saludos
447
« en: Miércoles 24 de Noviembre de 2010, 14:56 »
Ponme un poco lo que tienes hecho y lo vemos.
448
« en: Miércoles 24 de Noviembre de 2010, 09:20 »
Tu problema realmente no tiene nada que ver con recursividad, sino con getch() ( getche() no existe)  A ver si ponemos títulos adecuados a los hilos... En el curro no tengo entorno para C, pero algo así debería funcionar, ya me dices: char* leer_hasta(char* buffer, char fin) { if (buffer != NULL) { char c; int i = 0; do { buffer[i++] = c; } while (c != fin) } return buffer; }
449
« en: Miércoles 24 de Noviembre de 2010, 09:03 »
Pero siempre asegúrate de que el SO te acepta la petición, tal y como te he puesto en el ejemplo. Y siempre solicita la memoria que vayas a utilizar, no toda la disponible "por si acaso". Si no sabes cuánta memoria total vas a usar, haz malloc() sólo de la que estés seguro y después puedes usar realloc() para agrandar ese mismo bloque.
Suerte con ello.
450
« en: Martes 23 de Noviembre de 2010, 18:24 »
10 millones ya no. 10 millones entra de sobra. El número que te he puesto arriba (0x80000000) son 2.147.483.648. size_t en sistemas de 32 bits acepta hasta 4.294.967.295. Saludos
Páginas: 1 ... 16 17 [18] 19 20 ... 100
|
|
|