हाय मैं प्रणाली समारोह के साथ एक फ़ोल्डर में फ़ाइलों के डेटा लेने के लिए इस कोड कोजब सी
char path[100],command[120];
scanf("%s",&path);
sprintf(command,"echo $(ls %s) > something.txt",path);
system(command);
है triying हूँ में एक फ़ाइल में लिखने के लिए गूंज का उपयोग कर नई लाइन बनाने के लिए लेकिन जब मैं करने के लिए लग रही है something.txt कोई नई लाइन नहीं है।
acpi adjtime adobe apparmor.d arch-release asound.conf ati at-spi2 avahi bash.bash_logout ... wpa_supplicant X11 xdg xinetd.d xml yaourtrc
मैं गूंज के -e
-E
-n
विकल्पों का प्रयास किया था, लेकिन यह काम नहीं किया: यह आउटपुट, सभी छोड़े गए कई फ़ाइल नाम के साथ एक लाइन पर है। इन फ़ाइलों में से प्रत्येक के बाद एक नई लाइन कैसे बनाएं?
क्या आपने ** ls -l ** – user1269942
हाँ की कोशिश की है एक ही चीज होती है –
एक नई लाइन है, जिसकी अपेक्षा की जा सकती है। आपको 'ls' आउटपुट में न्यूलाइन को संरक्षित करने के लिए" echo "$ (ls% s) निष्पादित करने की आवश्यकता है। देखें [बैश वैरिएबल में एकाधिक-लाइन आउटपुट कैप्चर करना] (http://stackoverflow.com/questions/613572/)। उपयोग करें: 'snprintf (कमांड, "echo \" $ (ls% s) \ "> something.txt", पथ); और इस तथ्य के बारे में चिंता करें कि आपके पास स्ट्रिंग में 20 से अधिक अतिरिक्त वर्ण हैं, इसलिए 120 होना चाहिए 140 की तरह 130 की तरह। आपको 'स्कैनफ ("% 99s", पथ)' (कोई एम्परसैंड; लंबाई सीमित करना) का उपयोग करना चाहिए, और आदर्श रूप से जांचें कि यह काम करता है ('if (scanf (...) == 1) {... ठीक है ...} ')। –