Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Validaciones CMD
Autor Mensaje
Harrier-GR7 Sin conexión
Empleado de Fotocopiadora
Segundo Año Ing. Sistemas de ...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 34
Agradecimientos dados: 23
Agradecimientos: 0 en 0 posts
Registro en: Apr 2013
Mensaje: #1
Validaciones CMD Dudas y recomendaciones Sintaxis y Semántica de los Lenguajes
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);
}
28-06-2014 00:38
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dios Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.057
Agradecimientos dados: 33
Agradecimientos: 151 en 130 posts
Registro en: Dec 2011
Mensaje: #2
RE: Validaciones CMD
¿Y qué es exactamente lo que querés que te expliquemos?

PD: Usá las etiquetas CODE.

«(…)Se arman paquetes… ¿eh?… tecnológicos… tecnológicos portes de… en donde están… este… interrelacionados con las otras capas.(…)»
28-06-2014 01:22
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.402
Agradecimientos dados: 204
Agradecimientos: 298 en 186 posts
Registro en: Jun 2008
Mensaje: #3
RE: Validaciones CMD
Viendolo muuuuy por encima, no pareciera tener problemas. Se le podrían criticar cuestiones de estilo y blah, pero en principio la lógica del algoritmo pareciera estar bien.


Decís algo sobre las validaciones de un programa comando. ¿Te referís a las validaciones sobre argc?

Contanos un poco más, así te podemos dar una mano...

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
28-06-2014 01:49
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Harrier-GR7 Sin conexión
Empleado de Fotocopiadora
Segundo Año Ing. Sistemas de ...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 34
Agradecimientos dados: 23
Agradecimientos: 0 en 0 posts
Registro en: Apr 2013
Mensaje: #4
RE: Validaciones CMD
Se que no están acá para enseñar, solo dar una mano pero, no entiendo el porque del código.
No entiendo porque verifica a cada rato argc.
MAXLINEA ?


el profesor lo explico muy por encima, casi que lo memoricemos. Pero mas que nada quisiera saber el porque de las cosas antes que memorizar y después no acordarme porque.

Lamento pedirles una explicación. Muchas gracias por colaborar o interesarse.
28-06-2014 02:01
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dios Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.057
Agradecimientos dados: 33
Agradecimientos: 151 en 130 posts
Registro en: Dec 2011
Mensaje: #5
RE: Validaciones CMD
MAXLINEA es una constante. Está definida ahí, y se usa para marcar cuántos caracteres debe leer del archivo.

argc es la cantidad de argumentos con que se llamó al programa. Si es 1, es porque se lo llamó sólo con el nombre del programa sin nada adicional. Ejemplo: supongamos que el programa se llama "ejercicio". En la línea de comandos lo ejecutás con "ejercicio" así solamente, entonces argc vale 1. Si lo ejecutás como "ejercicio arch.txt" es el caso "argc != 3". Si lo ejecutás como "ejercicio arch.txt lalala", es el caso que está bien.

argc es la cantidad de argumentos con los que se llamó al programa
*argv[] es un puntero a un array de cadenas que contiene los argumentos con los que se lo llamó.

«(…)Se arman paquetes… ¿eh?… tecnológicos… tecnológicos portes de… en donde están… este… interrelacionados con las otras capas.(…)»
(Este mensaje fue modificado por última vez en: 04-07-2014 22:07 por Dios.)
28-06-2014 02:08
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Dios recibio 1 Gracias por este post
Harrier-GR7 (28-06-2014)
Harrier-GR7 Sin conexión
Empleado de Fotocopiadora
Segundo Año Ing. Sistemas de ...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 34
Agradecimientos dados: 23
Agradecimientos: 0 en 0 posts
Registro en: Apr 2013
Mensaje: #6
RE: Validaciones CMD
Ah okei, ahi voy entendiendo. Una cosita mas y listo.

Que hacen las siguientes funciones?

fopen(lee el primer caracter?,se que la "r"es read, y la write) y se guarda en una variable puntero FILE ?
fgets(???)
ferror(archivo) ????
feof(archivo) si llego al fin de la cadena?
fclose(archivo) lo cierra.
28-06-2014 02:17
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Santi Aguito Sin conexión
Presidente del CEIT
Newtoniano
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.238
Agradecimientos dados: 230
Agradecimientos: 616 en 336 posts
Registro en: Oct 2012
Mensaje: #7
RE: Validaciones CMD
fopen se encarga de abrir un archivo que vos le pases, el primer argumento es el path, o nombre del archivo (si esta en el mismo directorio), y el segundo es el modo en que lo vas a abrir. Lectura / escritura (hay varios tipos).

Y bueno, devuelve un FILE* asociado a ese archivo.

Busca la excelencia, el éxito llegará
28-06-2014 02:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Santi Aguito recibio 1 Gracias por este post
Harrier-GR7 (28-06-2014)
Dios Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.057
Agradecimientos dados: 33
Agradecimientos: 151 en 130 posts
Registro en: Dec 2011
Mensaje: #8
RE: Validaciones CMD
(28-06-2014 02:17)Harrier-GR7 escribió:  Ah okei, ahi voy entendiendo. Una cosita mas y listo.

Que hacen las siguientes funciones?

fopen(lee el primer caracter?,se que la "r"es read, y la write) y se guarda en una variable puntero FILE ?
fgets(???)
ferror(archivo) ????
feof(archivo) si llego al fin de la cadena?
fclose(archivo) lo cierra.

fopen es lo que dijo Santi_Aguito.
fgets lee un string (f de file, get de get, s de string). Lo guarda en linea, lee MAXLINEA caracteres, lo lee del archivo in.
ferror se usa para saber si hubo algún error con el archivo, de lectura/escritura/lo que sea.
feof da true si llegó al fin *del archivo*
fclose cierra el archivo, efectivamente.

«(…)Se arman paquetes… ¿eh?… tecnológicos… tecnológicos portes de… en donde están… este… interrelacionados con las otras capas.(…)»
(Este mensaje fue modificado por última vez en: 28-06-2014 02:50 por Dios.)
28-06-2014 02:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Dios recibio 1 Gracias por este post
Harrier-GR7 (28-06-2014)
Harrier-GR7 Sin conexión
Empleado de Fotocopiadora
Segundo Año Ing. Sistemas de ...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 34
Agradecimientos dados: 23
Agradecimientos: 0 en 0 posts
Registro en: Apr 2013
Mensaje: #9
RE: Validaciones CMD
Muchisimas gracias, me aclararon muchisimo el panorama.

Que tengan buenas noches y suerte con los parciales y los finales =).
28-06-2014 02:51
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.