मेरे पास एक सी ++ होमवर्क है। होमवर्क एक सी प्रोग्राम को सी ++ में बदलने के लिए कह रहा है।सी से सी ++ (सरल त्रुटि लेकिन कैंट फिक्स) को परिवर्तित करने में मदद की ज़रूरत है
आप एक सी ++ समारोह में निम्नलिखित सी समारोह में परिवर्तित करने का अनुरोध किया और फिर एक पूर्ण कार्यक्रम में एम्बेड और परीक्षण कर रहे हैं: नीचे प्रश्न है। नोट कि यह फ़ंक्शन पूर्णांक की बाइनरी फ़ाइल कॉपी करता है और पाठ फ़ाइल नहीं। कार्यक्रम को कमांड लाइन से तर्क (प्रतिलिपि करने के लिए फ़ाइल और फ़ाइल कॉपी करने के लिए) स्वीकार करना होगा।
/* ==================== cpyFile =====================
This function copies the contents of a binary file
of integers to a second file.
Pre fp1 is file pointer to open read file
fp2 is file pointer to open write file
Post file copied
Return 1 is successful or zero if error
*/
int cpyFile (FILE *fp1, FILE *fp2)
{
/* Local Definitions */
int data;
/* Statements */
fseek (fp1, 0, SEEK_END);
if (!ftell (fp1))
{
printf ("\n\acpyFile Error : file empty\n\n");
return 0;
} /* if open error */
if (fseek (fp1, 0, SEEK_SET))
return 0;
if (fseek (fp2, 0, SEEK_SET))
return 0;
while (fread (&data, sizeof (int), 1, fp1))
fwrite (&data, sizeof (int), 1, fp2);
return 1;
} /* cpyFile */
मैं अपना सर्वश्रेष्ठ किया था और परिवर्तित करने में कामयाब रहे, लेकिन दुर्भाग्य से जब मैं यह उपयोग कर रहा हूँ, फ़ाइल है कि मैं नकल के बाद मिलता है खाली है। नीचे मेरी जवाब है:
#include <fstream>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{
if(argc!=3)
{cerr<<"invalid number of arguments. must be 3."<<endl;exit(1);}
fstream fp1(argv[1],ios::in);
if(!fp1)+{cerr<<argv[1]<<" could not be opened"<<endl;exit(1);}
fstream fp2(argv[2],ios::out);
if(!fp2)+{cerr<<"file could not be found."<<endl;exit(1);}
int data;
fp1.seekg (0,ios::end);
if (!fp1.tellg())
{
cout<<"\n\acpyFile Error : file empty\n\n";
return 0;
} /* if open error */
if (fp1.seekg (0, ios::beg))
return 0;
if (fp2.seekg (0, ios::beg))
return 0;
while (fp1.read (reinterpret_cast<char*>(&data), sizeof (int)))
{
fp2.seekp(0);
fp2.write (reinterpret_cast<char*>(&data), sizeof (int));
}
return 1;
}
मैंने किया था मेरी सबसे अच्छी और सब कुछ ठीक काम कर रहा है, सिवाय इसके कि जब मैं एक बाइनरी फ़ाइल, फ़ाइल है कि मैं पाने के रिक्त है कॉपी और मैं पता नहीं क्यों है। , fstream fp1(argv[1], ios::in | ios::binary);
एक अच्छा प्रयास, मैं आपको एक सभ्य जाने के लिए सराहना करता हूं बल्कि धन्यवाद कि किसी और से यह आपके लिए ऐसा करने के लिए कहें। – dreamlax
अपने होमवर्क पर ऐसा न करें, लेकिन भविष्य के संदर्भ के लिए: 'std :: ofstream (argv [2]) << std :: ifstream (argv [1]);' –
आपके पास 'fp2.seekp क्यों है (0) * * लूप में? – celtschk