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