Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/11/2017, 11:48
marodal
 
Fecha de Ingreso: noviembre-2008
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 16 años
Puntos: 2
Convertir a mayusculas o minusculas contenido de un texto en C

Hola a todos,

Estoy desarrollando un programa en C que reciba por linea de comandos dos parámetros: -u/-l y el nombre de un fichero.
Si recibo -u he de convertir el contenido del fichero a mayúsculas, y si recibo -l, a minúsculas.

Mi código es el siguiente:
Código:
#include <stdio.h>
#include <string.h>
void main(int argc, char* argv[]){
	
	if (argc != 3){
		printf("Número de parámetros incorrecto\n");	
	}
	else{
		FILE *archivo;
		
		char *modo = argv[1];
		char *nombre_archivo = argv[2];
		int caracter;
		
		
		archivo = fopen (nombre_archivo , "r");
		
		
		if(archivo == NULL){
			printf ("Error en la apertura del fichero\n");
		}
		else{
			
			while (feof(archivo) == 0 ){
				
				
			
				caracter = fgetc(archivo);

				printf("%c",caracter);
				
				if (strcmp(modo,"-u") == 0){
					
					if (caracter >= 'a' && caracter <= 'z'){
						caracter = caracter + 'A' - 'a';
					}
					fseek(archivo,-1,SEEK_CUR);
					fputc(caracter,archivo);
					fflush(archivo);
				}
				else if (strcmp(modo,"-l") == 0){
					if (caracter >= 'A' && caracter <= 'Z')
						caracter = caracter + 'a' - 'A';
					fseek(archivo,-1,SEEK_CUR);
					fputc(caracter,archivo);
				}
			}
		}
		
		
	}
	
}
El problema que tengo es que entro en un bucle infinito, ya que siempre coge lee el primer carácter. He probado a hacer otro fseek tras el que aparece, posicionando el cursor 1 posición después de la actual, pero sigue el problema del bucle infinito.

¿Qué es lo que está ocurriendo? ¿Cómo puedo solucionar el problema?

SAludos