FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
como guardar una palabra de un archivo .txt
necesito sacar una palabra de un archivo .txt con el siguiente formato:
QUESO;5 PLANCHA;4 TORTUGA;9 ZAPATO;6 HORMIGA;1 UNIVERSIDAD;3 TECLADO;8 INFORMATICA;7 INGENIERIA;2 LETRERO;10 el numero es el orden en como debo sacarla, y guardala en una variable. COMO LO HARIA? ESTO SERIA PARA EL LENGUAJE C |
#2
|
||||
|
||||
¿Y qué parte no sabes?, ¿qué codigo tienes?, ¿dónde tienes el problema?
|
#3
|
|||
|
|||
yo leo el archivo, pero lo leo por caracteres, pero cuando trato de poner cada caracter en una sola variable no puedo, no se hacerlo en c.
Código PHP:
Código PHP:
Última edición por ecfisa fecha: 24-11-2014 a las 17:45:36. Razón: Agregar etiquetas [php] |
#4
|
||||
|
||||
¿Y qué error es?
Por cierto, bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración Recuerda poner los tags al código fuente, ejemplo: Gracias |
#5
|
|||
|
|||
esa es la imagen, me sale una ventana emergente.
|
#6
|
||||
|
||||
Depúralo paso a paso para encontrar la línea que te da el problema.
|
#7
|
||||
|
||||
Tienes varios fallos:
Código PHP:
Código PHP:
Código PHP:
|
#8
|
||||
|
||||
Esto está probado y hace lo que quieres aunque yo en este caso usaria mejor fscanf y me quitaba de lios de leer caracter a caracter pero bueno:
Código PHP:
|
#9
|
||||
|
||||
Hola jcdca.
Cita:
Pero te pongo un ejemplo que lee el archivo, separa las palabras de los números tomando en cuenta el delimitador ";" y va almacenando las palabras en un arreglo cuyo índice está dado por el número leido: Código PHP:
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 24-11-2014 a las 23:44:35. Razón: corregir ruta al archivo |
#10
|
|||
|
|||
listo gracias, son unos genios jeje... es que nunca había usado el lenguaje c y hay cosas que se me complican todavía... ya me corre bien gracias a todos.. era eso de concatenar así: palabra+=caracter; lo puse como me dijeron con un indice y corre, pero ahora tengo otra duda, estoy tratando de que imprima solo una palabra, por ejemplo:
QUESO;5 PLANCHA;4 TORTUGA;9 ZAPATO;6 HORMIGA;1 UNIVERSIDAD;3 TECLADO;8 INFORMATICA;7 INGENIERIA;2 LETRERO;10 de esa lista que les di antes también, yo leo carácter por carácter, guardando la palabra, hasta llegar al punto y coma, cuando llego al punto y coma leo el numero y con un if lo comparo con el numero 1, para ver si es la primera palabra que en este caso seria hormiga, si no es la primera, borro la palabra y sigo buscando hasta conseguirla. asi tengo el código: else { caracter = fgetc(archivo); //esto me lee el numero que esta al lado del punto y coma int aux = (int) (caracter - 48); //esto me convierte ese numero en entero if (aux==x) //esto me compara ese numero con x, que en este caso es 1 {palabra[i] = '\0'; printf("\n %s",palabra); getch(); break; }else {} el código así si funciona, pero me imprime todas las palabras hasta llegar a la primera, QUESOPLANCHATORTUGAZAPATOHORMIGA y se detiene cuando llega a la primera... la cosa es que necesito vaciar la variable para que no me las guarde todas, si no solo la ultima palabra... esa parte de vaciar tendría que ponerla en el ultimo else si no me equivoco... intente poniendo en el else esto: *palabra = '\0';, y nada, si pongo eso no me imprime nada de nada, no me da error pero tampoco me imprime.... también intente con palabra[0]=0; y lo mismo no imprime nada. probé también poniendo palabra[i] = '\0'; en el else y no hace nada, me sigue imprimiendo todas las palabras hasta la llegar a la primera.. y con la funcion memset() me da un error no se si es que me falta alguna librería o algo. el getch(); es solo para que se detenga y ver si imprimia algo. y el break es para romper el ciclo, que imagino que ya lo saben, pero bueno jeje |
#11
|
||||
|
||||
Hola jcdca.
Por favor, cuando incluyas código en tus mensajes usa las etiquetas como indica la siguiente imágen: Saludos y gracias por tu colaboración
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#12
|
||||
|
||||
Creo que te complicas mucho la vida, yo usaria archivos con registros de tamaño fijo.
En este ejemplo puedes ver como crear un archivo secuencial y lo relleno y luego busco en el tanto por nombre como por numero de registro. Es mucho mas sencillo de manejar. Código PHP:
|
#13
|
|||
|
|||
ya pude hacerlo, pero ahora tengo otro problemita recorro el archivo y saco las palabras en orden, y llamo a la funcion insertarenlista para meter todas las palabras en orden en una lista, al parecer si la llena o eso creo yo, pero al momento de imprimirla me muestra simbolos extraños, no se si es que la lleno mal, o que la imprimo mal o lo que sea, alguien sabe que tengo mal?
Código PHP:
|
#14
|
||||
|
||||
lo he mirado por encima en el movil y la verdad es que no tiene mucho que ver con lo que mostrabas antes pero a simple vista, en la funcion que añade nuevos registros veo "nuevoNodo->palabra[30]=palabra[30]; " y eso está mal. Lo que haces es copiar el caracter 30 y solo ese. Puedes optar por usar strcpy, strncpy, o un bucle que copie todo el array pero no se puede copiar una cadena con un simple igual ya que lo que haces en realidad es asignar la direccion y no su contenido y al cambiar el contenido del array cambia en ambos.
|
#15
|
|||
|
|||
Para que sepan esto es lo que tengo que hacer:
Consiste en un juego donde el usuario deberá adivinar un conjunto de palabras las cuales serán cargadas desde un archivo con formato txt (su formato será indicado más adelante en el presente documento). El juego consiste en que una vez cargue una lista de palabras a adivinar por el usuario, este deberá ir ingresando letras por el teclado, en caso de que la letra introducida pertenezca a la palabra deberá mostrarse por pantalla, en caso contrario, deberá restarle una vida. Durante la partida el usuario podrá equivocarse cinco (5) veces máximo, luego de cometer este número de equivocaciones, la partida se dará por terminada y se le deberá notificar dicha situación, dándole la oportunidad de iniciar una nueva. Al iniciar una partida se le deberá preguntar al usuario cuantas palabras desea que tenga la partida, siendo el mínimo 3 y el máximo 10, se leerán las todas las palabras que contenga el archivo y se mostrará dicho número introducido por el usuario siguiendo el orden que se muestra en la sección de estructura del archivo. Las letras introducidas indican las teclas que van presionando los usuarios (deben omitirse los caracteres especiales tales como ñ, á, #, etc. Así como números 123456789, el número cero (0) si debe de leerse al ser introducido por teclado ya que será interpretado como la instrucción para finalizar la partida por parte del jugador. Al finalizar la partida, debe de preguntársele al usuario nuevamente el número de palabras a ser mostradas, leerse la totalidad del archivo, ordenarlas según el formato y desplegar la cantidad de palabras indicadas por el usuario. Para la lista de palabras a ser mostradas durante la partida deberá utilizarse obligatoriamente una lista u otro conjunto de manejo dinámico, bajo ningún concepto se permite utilizar arreglos para tal fin, el equipo que utilice este elemento para mostrar las palabras a ser utilizadas en la partida será reprobado lamentablemente con una nota de 01 en dicha entrega. Las letras restantes, indican el resto de letras del abecedario que el usuario puede introducir todavía para la palabra que se muestra en pantalla. Cada vez que se pase a una nueva palabra, la lista de letras introducidas y restantes deben reiniciarse, en el caso de las introducidas ponerse en blanco, en caso de las restantes, mostrar todo el abecedario (Omitir la letra ñ). La siguiente línea de la interfaz deberá mostrar la palabra por la que va el jugador de las 10 cargadas. Las vidas restantes, 5 en total, deberán mostrarse en pantalla con algún símbolo, corazón por ejemplo, cada vez que el usuario se equivoque, es decir introduzca una letra que no pertenezca a la palabra en pantalla se le restará una vida de las 5 disponibles. Es importante resaltar que las vidas del usuario son para toda la partida, no por palabra, razón por la cual las mismas no deben reiniciarse al pasar a la siguiente palabra como si ocurre con las listas de letras introducidas y letras restantes. Por último, como de indico anteriormente, debe mostrarse la opción para salir de la partida, es decir la tecla 0, si el usuario introduce dicho carácter, la partida deberá terminar y volver a leerse el archivo de 10 palabras ordenadas según se indique en la estructura del mismo. En caso de que el usuario logre pasar las 10 palabras de la partida, el juego deberá notificarle que ha concluido con éxito la misma, felicitándolo y volviendo a iniciarse una nueva partida una vez el usuario haya culminado la misma. Ya llene la lista con las palabras del archivo, ahora quiero sacar una por una para comparar las letras de la palabra con las introducidas por el usuario |
#16
|
||||
|
||||
a ver, cuando trabajas con listas, al crearla, guardas en un puntero la direccion al primer miembro de la lista y luego simplemente usas una nueva estructura de ese tipo a la que le asignas la direccion de ese puntero y tendras al primer miembro, para leer el siguiente le asignas al puntero la direccion que contiene next en tu caso y asi hasta que next sea null. Si pones todo el proyecto te podremos ayudar mas eficientemente ya que si no nos tocaria adivinar cosas. Un detalle, si usas malloc no te olvides de usar free para liberar la memoria de todos sus miembros.
|
#17
|
||||
|
||||
Aqui se explica bien claro y sencillo el funcionamiento de las listas enlazadas simples que es lo que estás usando: http://es.kioskea.net/faq/2842-la-lista-enlazada-simple
PD: No te vamos a hacer el trabajo pero si pones tu codigo y nos dices en que fallas pues te podriamos ayudar jejeje. |
#18
|
|||
|
|||
jajaja claro que no me van a hacer el trabajo, la idea es hacerlo yo y aprender jeje, yo puse lo que me mandaron para que supieran mas o menos que es lo que trato de hacer y sea mas fácil al ayudarme, porque vi que hay algunas preguntas que hice que no entendían, entonces por eso mande el enunciado, estoy tratando de hacer un juego de el ahorcado pero con las instrucciones que me dieron.... la duda anterior ya la resolví gracias... déjenme adelantar y acomodar un poco mas el código y se los paso junto con las dudas que se me presentaron
|
#19
|
|||
|
|||
bueno aquí esta el código
Código PHP:
Código PHP:
Código PHP:
podría declarar la variable fuera de todas las funciones y me serviría, pero no quiero eso, quiero pasarla por referencia, porque ya lo he intentado varias veces y no me sale... bueno esas son mis tres dudas por ahora, porque ignora el scanf la primera vez, como paso minusculas a mayusculas y como paso por referencia.. y desde ya, gracias por la ayuda |
#20
|
||||
|
||||
lo del scanf seguramente es porque el flujo de entrada contiene datos, limpialo antes del scanf con un fflush(stdin). Para pasar de minusculas a mayusculas simplemente asegurate que sea una letra en minusculas con un condicional y si lo es le restas 32. Para lo de las vidas si pasasla direccion luego para acceder a su contenido haz *vidas. Pon el asterisco delante. Lee informacion sobre el uso de punteros. No entiendo como te mandan algo tan complejo sin tener claro el uso de punteros, filas, flujo... Dentro de un rato veo tu codigo a ver si veo algo raro.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Guardar un DBGrid como archivo *.dbf | richisaurio | Conexión con bases de datos | 13 | 25-01-2013 17:53:32 |
¿como guardar un archivo de texto como ANSI? | JXJ | Varios | 2 | 09-09-2011 21:26:29 |
Posible Guardar QuickReport Como Archivo | jirbert | Varios | 5 | 24-07-2008 10:27:40 |
Como guardar un TChart en archivo gif? | crespopg | Gráficos | 1 | 04-05-2007 23:18:26 |
Como guardar un objeto en un archivo ? | cmurua71 | OOP | 7 | 18-11-2005 21:26:30 |
|