ठीक है, मानते हैं कि आप विंडोज वातावरण में कमांड लाइन पर हैं, आप पाइप या कमांड लाइन रीडायरेक्ट का उपयोग कर सकते हैं। उदाहरण के लिए,
commandThatOutputs.exe > someFileToStoreResults.txt
या
commandThatOutputs.exe | yourProgramToProcessInput.exe
अपने कार्यक्रम के भीतर, आप सी मानक इनपुट कार्यों का उपयोग अन्य कार्यक्रमों निर्गम (scanf, आदि) को पढ़ने के लिए कर सकते हैं: http://irc.essex.ac.uk/www.iota-six.co.uk/c/c1_standard_input_and_output.asp। आप फ़ाइल उदाहरण का भी उपयोग कर सकते हैं और fscanf का उपयोग कर सकते हैं। यह यूनिक्स/लिनक्स में भी काम करना चाहिए।
यह एक बहुत ही सामान्य सवाल है, आप अधिक विवरण शामिल करना चाहेंगे, जैसे कि यह किस प्रकार का आउटपुट है (बस टेक्स्ट, या बाइनरी फाइल?) और आप इसे कैसे संसाधित करना चाहते हैं।
संपादित करें: हुरे स्पष्टीकरण!
एसटीडीओटीटी को पुनर्निर्देशित करना परेशानी लग रहा है, मुझे इसे .NET में करना पड़ा, और उसने मुझे सभी प्रकार के सिरदर्द दिए। ऐसा लगता है कि उचित सी तरीका एक बच्चे की प्रक्रिया को जन्म देना है, एक फाइल पॉइंटर प्राप्त करना है, और अचानक मेरे सिर को दर्द होता है।
तो एक हैक है जो अस्थायी फ़ाइलों का उपयोग करता है। यह आसान है, लेकिन यह काम करना चाहिए। अगर गति कोई मुद्दा नहीं है (डिस्क धीमा हो रही है), या अगर यह फेंक दिया जाता है तो यह अच्छी तरह से काम करेगा। यदि आप एक एंटरप्राइज़ प्रोग्राम बना रहे हैं, तो एसटीडीओटी रीडायरेक्शन की तलाश करना शायद सबसे अच्छा है, अन्य लोगों ने सिफारिश की है।
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE * fptr; // file holder
char c; // char buffer
system("dir >> temp.txt"); // call dir and put it's contents in a temp using redirects.
fptr = fopen("temp.txt", "r"); // open said file for reading.
// oh, and check for fptr being NULL.
while(1){
c = fgetc(fptr);
if(c!= EOF)
printf("%c", c); // do what you need to.
else
break; // exit when you hit the end of the file.
}
fclose(fptr); // don't call this is fptr is NULL.
remove("temp.txt"); // clean up
getchar(); // stop so I can see if it worked.
}
अपने फाइल अनुमति जाँच करने के लिए सुनिश्चित करें: अभी इस बस एक exe रूप में एक ही निर्देशिका में फाइल फेंक देते हैं। आप Vista में /tmp
या Vista में C:\Users\username\Local Settings\Temp
या C:\Documents and Settings\username\Local Settings\Temp in 2K/XP
का उपयोग करना चाहेंगे। मुझे लगता है कि /tmp
ओएसएक्स में काम करेगा, लेकिन मैंने कभी भी इसका इस्तेमाल नहीं किया है।
यह भी देखना http://stackoverflow.com/questions/125828/capturing-stdout-from-a-system-command-optimally – rogerdpack
हैं आप stderr चाहते हैं साथ ही आप रीडायरेक्ट कर सकते हैं, उदाहरण के लिए कॉल ls nonexistant-name 2> और 1 – Vic
यह डुप्लिकेट नहीं है; लिंक किया गया प्रश्न ** सी ++ विशिष्ट ** है, जबकि यह प्रश्न ** सी ** है। –