| | |
Merge Files , in c++
Please support our C++ advertiser: Programming Forums - DaniWeb Sister Site
![]() |
•
•
Join Date: May 2008
Posts: 3
Reputation:
Solved Threads: 0
I need help immediately to solve the following question:
can somebody suggest how to code the following?
Write functions OpenFiles and MergeAndDisplay:
OpenFiles syntax:
ifstream *OpenFiles(char * const fileNames[], size_t count);
Parameters:
fileNames - a pointer to the first element in an array representing
the names of text files to be opened. The array has
the underlying format:
char *fileNames[] = { "fileA", "fileB", etc. };
count - the number of elements in <fileNames>
Synopsis:
Dynamically creates an array of <count> ifstream objects then uses
them to open the files named in <fileNames>, in order. All opens
are in the read-only text mode. If any open fails all previously
opened files are closed, the dynamic allocation is deleted, an
error message is output to cerr, and the program is terminated with
an error exit code. If <count> is zero an error message is output
to cerr and the program is terminated with an error exit code.
Return:
a pointer to the first entry in the ifstream array if <count> is
non-zero and all opens succeed; otherwise, the function does not
return.
MergeAndDisplay syntax:
void MergeAndDisplay(ifstream files[], size_t count);
Parameters:
files - a pointer to the first element in an array of <count>
ifstream objects, where each object represents a text
file open in the text mode for reading.
count - the number of elements in the array in <files>
Synopsis:
Proceeding in order from the first file specified in <files>, the
first line in each is read and displayed, followed by the second
line in each, follow by the third, etc. When the end of any file
is reached that file is closed and the process continues using only
the remaining open files, until all files have finally been closed.
Empty lines are displayed as empty lines. Empty files are simply
closed and ignored.
Return:
void
• Specify the file name(s) on the command line.
• Both functions must handle any arbitrary number of files.
• Assume no line will contain more than 511 characters.
• Do not attempt to store the entire contents of any file.
• Do not attempt to read a file after reaching its EOF.
Please suggest ,its urgent
Thanks,
can somebody suggest how to code the following?
Write functions OpenFiles and MergeAndDisplay:
OpenFiles syntax:
ifstream *OpenFiles(char * const fileNames[], size_t count);
Parameters:
fileNames - a pointer to the first element in an array representing
the names of text files to be opened. The array has
the underlying format:
char *fileNames[] = { "fileA", "fileB", etc. };
count - the number of elements in <fileNames>
Synopsis:
Dynamically creates an array of <count> ifstream objects then uses
them to open the files named in <fileNames>, in order. All opens
are in the read-only text mode. If any open fails all previously
opened files are closed, the dynamic allocation is deleted, an
error message is output to cerr, and the program is terminated with
an error exit code. If <count> is zero an error message is output
to cerr and the program is terminated with an error exit code.
Return:
a pointer to the first entry in the ifstream array if <count> is
non-zero and all opens succeed; otherwise, the function does not
return.
MergeAndDisplay syntax:
void MergeAndDisplay(ifstream files[], size_t count);
Parameters:
files - a pointer to the first element in an array of <count>
ifstream objects, where each object represents a text
file open in the text mode for reading.
count - the number of elements in the array in <files>
Synopsis:
Proceeding in order from the first file specified in <files>, the
first line in each is read and displayed, followed by the second
line in each, follow by the third, etc. When the end of any file
is reached that file is closed and the process continues using only
the remaining open files, until all files have finally been closed.
Empty lines are displayed as empty lines. Empty files are simply
closed and ignored.
Return:
void
• Specify the file name(s) on the command line.
• Both functions must handle any arbitrary number of files.
• Assume no line will contain more than 511 characters.
• Do not attempt to store the entire contents of any file.
• Do not attempt to read a file after reaching its EOF.
Please suggest ,its urgent
Thanks,
The first OpenFile() should be pretty easy. Use the new operator to allocate menory for an array of ifstream objects, open each of the files, then return the array.
The second function is a little more complicated. You will need a loop to read one line from each file in each loop iteration.
Would I write the program for you? I could, but I won't. You give it a try and post the code you have written, then ask questions about what you do not understand.
The second function is a little more complicated. You will need a loop to read one line from each file in each loop iteration.
Would I write the program for you? I could, but I won't. You give it a try and post the code you have written, then ask questions about what you do not understand.
Don't PM me with questions -- you might get a nasty PM in response. If you have a question then post it in one of the forums.
•
•
Join Date: May 2008
Posts: 3
Reputation:
Solved Threads: 0
•
•
•
•
The first OpenFile() should be pretty easy. Use the new operator to allocate menory for an array of ifstream objects, open each of the files, then return the array.
The second function is a little more complicated. You will need a loop to read one line from each file in each loop iteration.
Would I write the program for you? I could, but I won't. You give it a try and post the code you have written, then ask questions about what you do not understand.
Below is my code .just for the open files.Could you please review and suggest for any corrections that are needed to make it working.
C++ Syntax (Toggle Plain Text)
ifstream *OpenFiles(char * const fileNames[], size_t count) { char *first, *last, *ptr; fileNames[] = new char * const [count]; int cnt = 0; for(first = fileNames, last = &first[count - 1]; first <= last; ++first) { OpenFiles (first, ios::in); cnt++; if(!OpenFiles.is_open()) { while(cnt == 0) { OpenFiles.close(); delete first; cerr << "Can't open input file " << FILENAME << endl; // If file is not opened,display an error message exit (1); --cnt; } else if( count == 0) { cerr << "Can't open input file " << FILENAME << endl; // If file is not opened,display an error message exit (1); } else { cout<< "Success in opening file " << FILENAME << endl; } } } return fileNames; }
Last edited by Narue; May 22nd, 2008 at 3:22 pm. Reason: Added code tags
![]() |
Similar Threads
- how to merge files (Java)
- Merge Two Files (C++)
- XP renames my files (Windows NT / 2000 / XP)
- merge two files (C)
- Can anyone tell me how to print to alternate files? (C)
- Working with array of files (C++)
Other Threads in the C++ Forum
- Previous Thread: MessageBox
- Next Thread: VC++ vcspawn.exe
Views: 1560 | Replies: 2
| Thread Tools | Search this Thread |
Tag cloud for C++
6 add api array arrays beginner binary c++ c/c++ calculator char class classes code compile compiler console conversion convert count data delete desktop directshow dll dynamic encryption error file forms fstream function functions game givemetehcodez google graph homeworkhelper iamthwee ifstream input int integer java lazy lib linkedlist linker linux loop looping loops map math matrix memory microsoft newbie news number output parameter pointer problem program programming project proxy python random read recursion recursive reference return sort stream string strings struct studio system template templates test text tree unix url variable vector video visual visualstudio win32 windows winsock word wordfrequency wxwidgets






