Hola a todos, necesito hacer un programa que trata de contar el número de letras de cada uno de los argumentos que se escriben en la línea de comandos en la llamada al programa (sin contar el nombre del programa).
Para ello, almacenaremos en una tabla de enteros la longitud de cada una de las palabras de la línea de comandos exceptuando el nombre del programa. Posteriormente, dentro de la función main, se imprime este vector y la suma total. El tamaño de esta tabla se especicará mediante una constante simbólica de tamaño 4.
Para el diseño del programa, nos serviremos de la función cuentaCaracteres que devuelve el número total de caracteres de los argumentos de la línea de comandos, y recibe como argumentos:
palabras: dirección de comienzo de una tabla cuyos elementos son las direcciones de comienzo de los argumentos pasados al programa (sin incluir el nombre del programa).
Recuerde que argv es una tabla de punteros donde el primer elemento corresponde a la dirección de la tabla de caracteres donde se guarda el nombre del ejecutable.
Por tanto, en la llamada a la función, el parámetro real es argv+1 que es la dirección del primer numcaracteres: dirección de comienzo argumento después del nombre del programa. de una tabla de enteros donde almacenar el número de
caracteres de cada argumento.
tam: número de argumentos escritos en la línea de comandos exceptuando el nombre del programa, o bien el tamaño de la tabla de enteros si el número de argumentos introducido es mayor que el tamaño de la tabla de enteros.
Esta función, a su vez, utilizará la funcion lonCadena, que recibe como parámetro una cadena de caracteres y devuelve el número de caracteres de dicha cadena (recuerde que una cadena siempre finaliza con el carácter ’\0’.)
Si el número de argumentos es mayor que el tamaño de la tabla de enteros en el que se almacena la longitud de cada argumento, se da un mensaje de aviso indicando que no se han podido contar los caracteres de todos los argumentos. Por ejemplo, si el máximo de parámetros esperado fuera cuatro,
la ejecución sería:
salas@318CDCr12: ̃$ gcc -W -Wall -o cuentaCar cuentaCar.c
salas@318CDCr12: ̃$ cuentaCar septima practica del curso actual
El argumento 1 tiene 7 caracteres.
El argumento 2 tiene 8 caracteres.
El argumento 3 tiene 3 caracteres.
El argumento 4 tiene 5 caracteres.
El numero total de letras en linea de comando es: 23.
Aviso, han quedado argumentos sin contar.
por favor ayundeme a resolverlo, que no me entero muy bien de los punteros y las tablas. Solo he echo esto pero creo que no van por ahi los tiros.
Código:
/* Includes del sistema */
#include <stdio.h>
/* Includes de la aplicacion */
#include "cuentaCar.h"
/* constantes */
/* tipos definidos por el usuario */
/* Prototipo de funciones locales */
int cuentaCaracteres (char palabra[TAM]);
int main(int argc, char *argv[])
{
char palabras[TAM];
int i=0;
int caracteres=0;
for (i=1; i<argc; i++)
{
palabras[TAM]=argv[i];
caracteres= cuentaCaracteres(palabras[TAM]);
printf(T_CARACTERES, argc, caracteres);
}
}
int cuentaCaracteres (char palabra[TAM])
{
int result=0;
while (palabra[TAM]!='\0')
{
result++;
}
return result;
}