#include <stdio.h>
int main(int argc, char** argv) {
if (argc != 2) {
printf("MODO DE USO: %s <palabra>\n", argv
[0]); return 0;
}
for (; *argv
[1]; argv
[1]++) printf("%c\n", *argv
[1]);
return 0;
}
por que declaras argc y argv dentro d elos parentesis del main??
es la manera para poder pasarle argumentos al programa. antes de explicartelo mejor leete la teoria y luego pregunta en el caso de que tengas una duda concreta, sino realmente no entenderas porque se hace asi. si no te importa leer en ingles, puedes leerte
este enlace que es bastante corto. si prefieres en español, buscalo en google que deben haber miles de webs que lo expliquen.
contando con que te has leido ese enlace o algun otro que explique lo mismo,
argc es un entero que indica el numero de argumentos totales, siendo el minimo 1 que es el propio programa. en este caso, se llama al programa asi:
por lo que habran 2 argumentos: "./programa" y "coche255". de ahi el
if del principio del programa, que verifica si solo hay 2 argumentos y en el caso de que no sea asi, indica la manera de usar el programa y se cierra.
y el char** para que sirve??
argv es un puntero a un array de punteros a caracter. este representa los parametros pasados al programa. por ejemplo, en el caso de este programa:
argv[0] sera "./programa" y
argv[1] sera "coche255". si esto de los punteros no lo entiendes te recomendaria que buscaras de nuevo en google ya que hay tambien miles de webs que hablan sobre ello, y ahi te lo explicaran mucho mejor que yo aqui. si despues de leerlo tienes alguna duda entonces preguntalo aqui y te ayudaremos sin ningun problema.
luego lo que uso en el
for es aritmetica de punteros.
argv[1] es un puntero a una cadena, asi que la condicion del
for es que haya algo en esa posicion de la cadena (que no sea NULL), luego el incremento es sumarle 1 al puntero de la cadena, y dentro tan solo se imprime el caracter en esa posicion de la cadena.
espero que te sirva de ayuda, un saludo!