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:
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.#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); } } } } }
¿Qué es lo que está ocurriendo? ¿Cómo puedo solucionar el problema?
SAludos