Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

163
Vistas
Cómo hacer una nueva línea al usar echo para escribir un archivo en C

hola, estoy tratando de tomar los datos de los archivos en una carpeta con la función del sistema, este es el código

 char path[100],command[120]; scanf("%s",&path); sprintf(command,"echo $(ls %s) > something.txt",path); system(command);

pero cuando miro algo.txt no hay una nueva línea. Esta es la salida, todo en una línea con muchos nombres de archivos omitidos:

 acpi adjtime adobe apparmor.d arch-release asound.conf ati at-spi2 avahi bash.bash_logout ... wpa_supplicant X11 xdg xinetd.d xml yaourtrc

Probé -e -E -n opciones de eco pero no funcionó. ¿Cómo hacer una nueva línea después de cada uno de estos archivos?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No deberías usar echo . haz solo

 sprintf(command,"ls %s > something.txt",path); system(command);

Cuando usa echo , envía todos los argumentos de la línea de comando a la salida estándar, uno por uno, separados por el carácter de espacio. El carácter de nueva línea (que es la salida del comando ls ) funciona como un separador de argumentos, al igual que el espacio.

over 4 years ago · Santiago Trujillo Denunciar

0

Hay una nueva línea, que es de esperar. El comando echo imprime todos sus argumentos en una sola línea separados por espacios, que es el resultado que ve.

Necesitas ejecutar el resultado de:

 echo "$(ls %s)"

para conservar las nuevas líneas en la salida de ls . Consulte Captura de salida de varias líneas en una variable de Bash .

Usar:

 snprintf(command, sizeof(command), "echo \"$(ls %s)\" > something.txt", path);`

Por supuesto, el echo es redundante; sería mejor simplemente ejecutar:

 ls %s

y por lo tanto:

 snprintf(command, sizeof(command), "ls %s > something.txt", path);

Si mantiene el eco, debe preocuparse por el hecho de que tiene más de 20 caracteres adicionales en la cadena de formato, por lo que 120 debería ser más como 130 si no 140.

También debe usar scanf("%99s", path) (sin ampersand; agregar límite de longitud) e idealmente verificar que funcionó ( if (scanf(...) == 1) { ... OK ... } ).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda