ı hi sto triying a prendere i dati di file in una cartella con la funzione di sistema di questo è il codiceCome rendere nuova linea quando si utilizza l'eco di scrivere un file in C
char path[100],command[120];
scanf("%s",&path);
sprintf(command,"echo $(ls %s) > something.txt",path);
system(command);
ma quando guardo al something.txt non c'è una nuova riga. Questa è l'uscita, il tutto su una riga con molti nomi di file omessi:
acpi adjtime adobe apparmor.d arch-release asound.conf ati at-spi2 avahi bash.bash_logout ... wpa_supplicant X11 xdg xinetd.d xml yaourtrc
ho provato -e
-E
-n
opzioni di eco, ma non ha funzionato. Come creare una nuova riga dopo ognuno di questi file?
hai provato ** ls -l ** – user1269942
yeb stessa cosa succede –
C'è una nuova linea, che è normale. È necessario eseguire: 'echo" $ (ls% s) "' per preservare le newline nell'output 'ls'. Vedi [Cattura di output su più righe su una variabile di Bash] (http://stackoverflow.com/questions/613572/). Usa: 'snprintf (comando," echo \ "$ (ls% s) \"> something.txt ", percorso);' e ti preoccupi del fatto che hai più di 20 caratteri in più nella stringa, quindi il 120 dovrebbe essere più come 130 se non 140. Dovresti anche usare 'scanf ("% 99s ", path)' (no e commerciale, aggiungi la lunghezza che limita) e idealmente controlla che funzioni ('if (scanf (...) == 1) {... OK ...} '). –