Usuario C entrada dinámica con argv.
Intento tomar una entrada de usuario de longitud máxima desconocida desde la línea de comandos. El programa necesita recibir una entrada dinámica de una cadena de caracteres (¿tal vez un arreglo de caracteres?). El resultado debería ser algo como:
./a.out st1
tu cadena es …
El único código que pude crear es el siguiente:
int main (int argc, char* argv[]){
...
char str1[];
str1 = argv[1];
printf("tu...");
...
}
davy.ai
Para tomar la entrada del usuario de longitud desconocida desde la línea de comandos en C, necesitarías asignar memoria dinámicamente con
malloc()
según la longitud de la cadena de entrada. Aquí tienes un ejemplo de código:En este código, primero verificamos si se ha proporcionado al menos un argumento en la línea de comandos usando
if (argc > 1)
. Si hay un argumento, calculamos su longitud usandostrlen()
y asignamos suficiente memoria usandomalloc()
para almacenar la cadena. Luego, copiamos el argumento a la memoria asignada dinámicamente usandostrncpy()
, agregamos un terminador nulo al final de la cadena usandoinput_str[len] = '\0'
e imprimimos la cadena de entrada usandoprintf()
. Finalmente, liberamos la memoria usandofree()
para evitar fugas de memoria. Si no se proporciona ningún argumento, imprimimos un mensaje que indica que no se proporcionó ninguna entrada.Ten en cuenta que en el código que proporcionaste, no puedes declarar
char str1[];
sin especificar su tamaño. Si quieres usar un arreglo de tamaño fijo, puedes declararchar str1[MAX_LENGTH];
y limitar la longitud máxima de la entrada del usuario. Sin embargo, este enfoque no es flexible si no conoces la longitud máxima de la cadena de entrada.