Autor
|
Tema: Ayuda T_T - Ejercicio de Archivos en C (Leído 2,388 veces)
|
palacio29
Desconectado
Mensajes: 103
|
Hola Tengo un problema con un ejercicio de informatica. Me resulta imposible. Lo que tengo que hacer es leer de un archivo txt que tengo en mi computadora que tiene el siguiente formato 37785443,agustin,francia 377685532,Pablo Rodriguez,Nicaragua Osea el formato viene siendo DNI,Nombre,Pais. Esos datos guardados en un txt, cada dato separado con una coma. Lo que tengo que hacer es agarrar ese archivo y mostrarlo por pantalla. Hasta ahora hice lo siguiente #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE*arch; arch =fopen("C:\\Users\\PC\\Desktop\\personas2.txt","r"); int i=0,j=0,documento=0; char aux,l; char nombre[50]={0}; char pais[50]={0}; { l=aux; while (l!=',' && l!='\n' && i<50) { nombre[i]=l; l=aux; i++; } nombre[i]='\0'; i=0; l=aux; while (l!=',' && l!='\n' && i<50) { pais[i]=l; l=aux; i++; } pais[i]='\0'; i=0; printf("%d\t%s\t%s\n",documento ,nombre ,pais ); } return 0; }
El problema es que siempre me queda mal, o no me imprime un nombre, o imprime mal el país. Trato con varios valores y siempre la pifia Lo que trato de hacer es que primero tome el documento y luego vaya tomando letra por letra hasta una coma y ahi poner \0. Desde ayer que estoy con esto y no lo puedo sacar bien
|
|
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.696
🏴 Libertad!!!!!
|
Puedes usar funciones como strtok o strstr?
Saludos
|
|
|
En línea
|
|
|
|
palacio29
Desconectado
Mensajes: 103
|
Puedes usar funciones como strtok o strstr?
Saludos
Hola Disculpa la demora. Ya lo hice y me salio pero tengo una duda que quizas lo sabes. Este es el codigo finalizado. Basicamente saque el documento con el fprintf y para el nombre y el pais use dos while, cada parte la guardaba en un arreglo y sacaba cada caracter con fgetc. El problema es que supongamos que tengo esta linea en el archivo txt 37481881,pablo,argentina. Cuando debuggeo el programa, cuando llega a la letra "o" de pablo, en vez de pasar a la coma como el proximo caracter, aparece que en la variable letra se guarda un "\r" que no se de donde viene y me obliga a hacer un if en cada while para evitar que tome el \r. Me fije el archivo y obviamente no tiene un \r en ese lugar. Asi que no se porque me pasa eso. #include <stdio.h> #include <stdlib.h> int main() { FILE*arch; int doc; int i=0; int j=0; char nombre[50]; char pais[50]; char letra; arch =fopen("C:\\Users\\Pablo-PC\\Desktop\\personas.txt","r"); if (arch==NULL) { } printf("Documento\tNombre\t\tPais\n"); while(!feof(arch ) && j <4) { letra =fgetc(arch ); ///Da la primera letra P while(letra!=',' && i<50) { if (letra!='\r') { nombre[i]=letra; i++; } } nombre[i]='\0'; i=0; while(letra!='\n') { if (letra!='\r') { pais[i]=letra; i++; } } pais[i]='\0'; i=0; j++; printf("%d\t%s\t%s\n",doc ,nombre ,pais ); } return 0; }
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! Lo del retorno de carro no se de donde te sale. De todas formas yo lo que haría, por simplicidad de código y sabiendo que cada campo está delimitado por comas, sería leer cada línea utilizando fgets, que también extrae el salto de línea que hay al final de cada línea, (puedes suponer que cada campo tiene una cantidad menor a, por ejemplo, 100 caracteres, 300 en total), y utilizar cadenas para almacenar cada campo utilizando sscanf para hacer una lectura con formato sobre la línea leída: { sscanf(linea ,"%s,%s,%s", dni , nombre , pais ); //ahora haces lo que quieras con esos datos }
¡Saludos! Acabo de ver que los nombres pueden tener espacios, así que el código anterior no sirve. En lugar de sscanf tendrías que utilizar strtok, incluida en string.h, utilizando la coma como delimitador, combinada con strcpy.
|
|
« Última modificación: 26 Septiembre 2016, 14:37 pm por do-while »
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ejercicio: .bat que distribuye archivos por su extensión
Scripting
|
miguelangelss4
|
0
|
2,015
|
24 Noviembre 2007, 20:47 pm
por miguelangelss4
|
|
|
[Ayuda] Ejercicio C 100
Ejercicios
|
Dem0ny
|
2
|
6,044
|
19 Diciembre 2007, 22:45 pm
por Dem0ny
|
|
|
[Ejercicio] Aca tienen un ejercicio para practicar
« 1 2 3 »
Programación Visual Basic
|
Dreamaker
|
20
|
15,772
|
5 Septiembre 2010, 02:57 am
por TGa.
|
|
|
Ayuda ejercicio de Pascal, cuando uno no lo ve claro pide ayuda
Programación General
|
manu3742
|
1
|
3,243
|
31 Marzo 2011, 15:43 pm
por d(-_-)b
|
|
|
Ayuda Con Ejercicio
ASM
|
sebis
|
1
|
2,926
|
10 Septiembre 2012, 13:12 pm
por Eternal Idol
|
|