Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

166
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda