943,963 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 382
  • C++ RSS
Oct 27th, 2009
0

Trouble With Input From a File

Expand Post »
I'm getting the same very large number for item and for each element in the array after that for loop is done. Why am i not pulling the 6 numbers from my input file? Thanks.


  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4. using namespace std;
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8. /* Extract value for # of elements in array */
  9. int i;
  10. sscanf (argv[2], "%d", &i);
  11. // printf("i is %d\n", i);
  12.  
  13. /* Create Input and Output Streams */
  14. ifstream fin;
  15. ofstream fout;
  16.  
  17. /* Oprn Input and Output Streams */
  18. fin.open("numlist.dat");
  19. fout.open("numlist.dat");
  20.  
  21. /* Tests to ensure files opened */
  22. if(fin.fail())
  23. {
  24. cerr << "Input did not open\n";
  25. exit(2);
  26. }
  27. if(fout.fail())
  28. {
  29. cerr << "Output file did not open\n";
  30. exit(2);
  31. }
  32.  
  33. /* Construct New Array */
  34. float *floatArray= new float[i];
  35.  
  36. /* Put numbers from list into array */
  37. float item;
  38. int j=0;
  39. // printf("Put Numbers from list into array\n");
  40. for (j=0; j<i;j++)
  41. {
  42. fin >> item;
  43. printf("item is %f\n", item);
  44. floatArray[j]=item;
  45. printf("floatArray[%d] is %f\n", j, floatArray[j]);
  46. }
  47. getchar();
  48. }
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
kingcrim05 is offline Offline
8 posts
since Oct 2009
Oct 27th, 2009
-7
Re: Trouble With Input From a File
If you only enter one argument then argv[2] is invalid. The program will only have argv[0] and argv[1].
Sponsor
Team Colleague
Featured Poster
Reputation Points: 5608
Solved Threads: 2282
Retired and Enjoying Life
Ancient Dragon is offline Offline
21,953 posts
since Aug 2005
Oct 27th, 2009
0
Re: Trouble With Input From a File
There will always be exactly two arguments that are put in on the command line. The first is the name of the input file (which will also be the output file once renamed) and the second is a # that is the # of floats in the input file to be read.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
kingcrim05 is offline Offline
8 posts
since Oct 2009
Oct 27th, 2009
0
Re: Trouble With Input From a File
C++ Syntax (Toggle Plain Text)
  1. fin.open("numlist.dat");
  2. fout.open("numlist.dat");
Perhaps first open for input. Then after you've extraced what you want and closed the file, then open the same file for output.
Last edited by Dave Sinkula; Oct 27th, 2009 at 9:22 pm.
Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004
Oct 27th, 2009
0
Re: Trouble With Input From a File
Nope, i'm still getting -107374176.000000 for all items
Reputation Points: 10
Solved Threads: 0
Newbie Poster
kingcrim05 is offline Offline
8 posts
since Oct 2009
Oct 27th, 2009
1
Re: Trouble With Input From a File
Just sayin'.
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

int main(int argc, char *argv[])
{
	/* Extract value for # of elements in array */
	int i;
	sscanf (argv[2], "%d", &i);
	// printf("i is %d\n", i);

	/* Create Input and Output Streams */
	ifstream fin;
	ofstream fout;

	/* Oprn Input and Output Streams */
	fin.open("numlist.dat");
	//fout.open("numlist.dat");

	/* Tests to ensure files opened */
	if(fin.fail())
	{
		cerr << "Input did not open\n";
		exit(2);
	}
	if(fout.fail())
	{
		cerr << "Output file did not open\n";
		exit(2);
	}

	 /* Construct New Array */
	float *floatArray= new float[i];

	/* Put numbers from list into array */
	float item;
	int j=0;
	// printf("Put Numbers from list into array\n");
	for (j=0; j<i;j++)
	{
		fin >> item;
		printf("item is %f\n", item);
		floatArray[j]=item;
		printf("floatArray[%d] is %f\n", j, floatArray[j]);
	}
}

/* numlist.dat
10 20 30 40 50
*/

/* my output
Debug\cpp.exe file.txt 5
item is 10.000000
floatArray[0] is 10.000000
item is 20.000000
floatArray[1] is 20.000000
item is 30.000000
floatArray[2] is 30.000000
item is 40.000000
floatArray[3] is 40.000000
item is 50.000000
floatArray[4] is 50.000000
*/
Last edited by Dave Sinkula; Oct 27th, 2009 at 9:30 pm.
Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004
Oct 27th, 2009
0
Re: Trouble With Input From a File
I'm confused why it would be working for you and not for me then. I'm using Visual Studio 2008 for the first time here so that may be it. Where should i be storing my numlist.dat? i have in my source folder along with my msort.cpp file. Is that the problem?
Reputation Points: 10
Solved Threads: 0
Newbie Poster
kingcrim05 is offline Offline
8 posts
since Oct 2009
Oct 27th, 2009
-7
Re: Trouble With Input From a File
It doesn't work for you because when you open the file for output ofstream truncates it to zero length, erasing all its contents. Comment out ofstream and its open statement then your program will work (after you add the data back into the file again).
Last edited by Ancient Dragon; Oct 27th, 2009 at 10:17 pm.
Sponsor
Team Colleague
Featured Poster
Reputation Points: 5608
Solved Threads: 2282
Retired and Enjoying Life
Ancient Dragon is offline Offline
21,953 posts
since Aug 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: precision issues when printing to cout
Next Thread in C++ Forum Timeline: How can I add sound to this??





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC