Dev - C++ - Ayuda con Archivos/ficheros

 
Vista:
sin imagen de perfil

Ayuda con Archivos/ficheros

Publicado por Balam Sinhue (1 intervención) el 10/12/2015 05:22:59
Hola muy buen día tengan todos ustedes, la razón por la que cree este tema fue para solicitar su ayuda con un programa que me ha dado problemas; el objetivo del programa es leer los nombres de un fichero y de manera "simultanea" cambiar los nombres a puras mayúsculas; el código no muestra errores ni advertencias pero al ejecutarlo, y posteriormente abrir el archivo escribe solo las dos primeras letras en mayúsculas pero la segunda se repite hasta el final pero la ultima letra es minúscula, aquí el código toda ayuda que me puedan brindar la agradezco desde ya, muchas gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main () {
 
	int i;
	char caracter;
	FILE *archivo;
	long int dir;
 
	archivo= fopen("AlumnosP1.txt", "r+");
 
	if (archivo == NULL) {
		printf("A ocurrido un error\n");
		exit(1);
	}
 
	else {
 
		while (feof(archivo) == 0) {
 
			caracter= fgetc(archivo);
			i= caracter;
 
			if (i >= 97) {
				i= i-32;
				caracter= i;
			}
 
			fseek(archivo, -1, SEEK_CUR);
			fputc(i, archivo);
		}
	}
 
	fclose(archivo);
 
        getchar();
	//system("pause");
 
	return 0;
}
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
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con Archivos/ficheros

Publicado por agustin (522 intervenciones) el 10/12/2015 06:08:31
No puedes modificar un dato del archivo a pelo sobre el archivo. Usa un archivo auxiliar o copia todo el archivo a la memoria y cuando termines de hacer todo guardas esa memoria modificada en el archivo sustituyendo su contenido. Por otro lado, para convertir a mayúsculas solo compruebas que sea mayor o igual a 97 pero en ese rango hay muchos que no son letras y que tu código intentaría pasar a mayúsculas. Tienes que comprobar el tope superior.
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