C/Visual C - Leer archivo

 
Vista:

Leer archivo

Publicado por Juan Carlos (14 intervenciones) el 25/12/2004 09:41:36
Hola, tengo un problema con un programa que quiero hacer, el chiste es que lea "n" numeros de un archivo y los ordene, ok, eso no ultimo no es ningun problema, mi problema es en la lectura del archivo (donde estan los numeros), este seria un ejemplo:

4
2 1 4 6

Donde el 4 es la cantidad de numeros que se van a acomodar, tengo el programa en C, lo quiero parar a C++, leer el archivo mediante ifstream, probe de la siguiente manera:
iftream archivo;
archivo >> tam;
cout << tam;
Pero al ejecutarlo me imprime 140,
Les agradeceria si me esplicaran como leer el numero de la primera linea y los de la segunda, esta claro que esto sería con un While.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Leer archivo

Publicado por El Mogur (1 intervención) el 25/12/2004 16:49:32
Hola,

Sí, la idea es esa; se utiliza un ifstream (stream de entrada), se abre con el nombre del fichero, y se leen. Sería algo como esto:

ifstream archivo("mifichero.txt");
int numElementos;

archivo >> numElementos;

for (int i = 0; i < numElementos; i++) {
int numero;
archivo >> numero;
cout << numero;
}

Más o menos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer archivo

Publicado por GRANDZAM (5 intervenciones) el 26/12/2004 04:45:34
Pues yo pienso que la manera más fácil es con un fscanf() para que te pueda leer más números, por ejemplo: 2 84 125 1205, etc. mira, haz un ciclo while, MIENTRAS un contador C, sea menor al que han tecleado. Y dentro del ciclo haces el fscanf(puntero_del_archivo,"%s",cadena) la cadena antes la declaras: char cadena[10]; y luego con la función atoi la conviertes en entero y los vas metiendo en un arreglo en la posición c, que antes lo debes igualar a 0, ya debes de saber porque, mira, aqui te dejo, el pseudo-codigo:

char cadena[10],ruta[20]; //por ejemplo, no necesariamente debe ser así
int arreglo[255],cuantos,c=0; // no necesariamente debe ser así
FILE *archivo;

printf("Cuántos números?: ");
scanf("%d",&cuantos);
printf("Ruta del archivo: ");
scanf("%s",ruta); //para cadenas no se pone el &
archivo=fopen(ruta,"rt");
if archivo!=NULL {
while (c<cuantos){
fscanf(archivo,"%s",cadena);
arreglo[c]= atoi(cadena);
c++;
}
}

Creo que asi es mas o menos, consulta el fopen...

______________
GRANDZAM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer archivo

Publicado por El Mogur (202 intervenciones) el 26/12/2004 14:18:23
Bueno, sobre gustos no hay nada escrito, pero esto en realidad tiene que ver con la alternativa de utilizar las funciones de C o las de C++...

Cuando diseñaron C++ y se plantearon qué interfaz proporcionar para el acceso a ficheros, optaron por olvidarse del printf y funciones asociadas (fprintf, sprintf...), y utilizar la generalización de los streams, para que su uso fuera independiente de si se estaba escribiendo/leyendo en la pantalla, a un fichero o mandando por red, y para que la sintaxis fuera también independiente de si se estaba escribiendo/leyendo un entero, un real o un tipo definido por el usuario, gracias a los operadores << y >> y su sobrecarga.

Creo que, salvo preguntarle al usuario el nombre del fichero, tu código con las funciones en C hace lo mismo que el mío utilizando las de C++ (salvo algún posible fallo mío o tuyo en el código, que ninguno de los dos lo hemos probado en el compilador ;) ), y la versión de C++ es más pequeña e intuitiva, creo.

OJO!: no he contestado a este mensaje en "defensa" de mi versión, sino en defensa de las funciones de C++ frente a las de C... :)

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer archivo

Publicado por GRANDZAM (5 intervenciones) el 30/12/2004 01:09:50
Bueno en realidad, c++ soporta todo lo que hagas en c, y todo lo demás queda en manos del programador, tu opinion me parece muy bien, y bueno aquí estamos para opinar, y para ayudarnos mutuamente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar