28-06-2014, 00:38
Hola Utnianos, tengo una duda sobre las validaciones en programa comando dfe un programa en C.
Dejo el enunciado y el ejercicio resuelto. Por favor, se que es mucho pedir que me expliquen, pero si alguno podria explicarme se lo agradeceria bastante.
Enunciado:
Desarrolle un programa que recibe en línea de comandos un archivo archi.txt y una cadena de caracteres. El programa debe mostrar por stdout las lineas que comienzan con el primer carácter de la cadena dada. Ejemplo: si se ejecuta prog archi.txt “jose” debe mostrar las líneas de archi.txt que comienzan con 'j'.
Resolucion:
#include <stdio.h>
#define MAXLINEA 80
int main(int argc, char * argv[])
{
FILE * in;
char linea[MAXLINEA+1];
if ( argc == 1 )
{
printf("Debe escribir 2 Argumentos en Linea de Comandos\n");
return -1;
}
if ( argc != 3 )
{
printf("Numero incorrecto de Argumentos\n");
return -2;
}
in = fopen(argv[1], "r");
if ( in == NULL )
{
printf("Error al abrir archivo de Entrada\n");
return -3;
}
while ( fgets(linea, MAXLINEA, in) != NULL )
{
if ( linea[0] == argv[2][0] ) fputs(linea, stdout);
}
if ( ferror(in) )
{
printf("Error de Lectura\n");
return -5;
}
else
if ( feof(in) ) printf("Fin de Archivo de Entrada\n");
fclose(in);
}
Dejo el enunciado y el ejercicio resuelto. Por favor, se que es mucho pedir que me expliquen, pero si alguno podria explicarme se lo agradeceria bastante.
Enunciado:
Desarrolle un programa que recibe en línea de comandos un archivo archi.txt y una cadena de caracteres. El programa debe mostrar por stdout las lineas que comienzan con el primer carácter de la cadena dada. Ejemplo: si se ejecuta prog archi.txt “jose” debe mostrar las líneas de archi.txt que comienzan con 'j'.
Resolucion:
#include <stdio.h>
#define MAXLINEA 80
int main(int argc, char * argv[])
{
FILE * in;
char linea[MAXLINEA+1];
if ( argc == 1 )
{
printf("Debe escribir 2 Argumentos en Linea de Comandos\n");
return -1;
}
if ( argc != 3 )
{
printf("Numero incorrecto de Argumentos\n");
return -2;
}
in = fopen(argv[1], "r");
if ( in == NULL )
{
printf("Error al abrir archivo de Entrada\n");
return -3;
}
while ( fgets(linea, MAXLINEA, in) != NULL )
{
if ( linea[0] == argv[2][0] ) fputs(linea, stdout);
}
if ( ferror(in) )
{
printf("Error de Lectura\n");
return -5;
}
else
if ( feof(in) ) printf("Fin de Archivo de Entrada\n");
fclose(in);
}