943,582 Members | Top Members by Rank

Ad:
  • C Discussion Thread
  • Unsolved
  • Views: 42524
  • C RSS
Oct 10th, 2003
0

read to end of line problem

Expand Post »
I have no clue why this isn't working! Basically, I've got my tree and
everything working, but now I need to fit it to the input the instructor
gave me. What I need to do is read the first part of a line and then
input each following term into the tree... My problem come with reading
until the end of the line. For some reason, it won't recognise the newline
'\n' character. Right now I'm using strings but I've created a little
sample program below that shows what I'm talking about:

my input looks like this:
I1 kim abelo xxxx abcd xxxy
I2 abelo timmy
D1 kim abelo
D2 timmy
T1
T2
ID
IS

What I'm thinking this code should do is print out that first line only
but it keeps going.

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main () {
  7. char temp;
  8.  
  9. ifstream infile("in.txt");
  10.  
  11. infile >> temp;
  12. while ((!infile.eof()) && (temp != '\n')) {
  13. cout << temp;
  14. infile >> temp;
  15. }
  16.  
  17. cout << endl;
  18.  
  19. return 0;
  20. }

output received:
I1kimabeloxxxxabcdxxxyI2abelotimmyD1kimabeloD2timmyT1T2IDIS


Thanks in advance.
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
one1082 is offline Offline
2 posts
since Oct 2003
Oct 10th, 2003
0

Re: read to end of line problem

Why not use fgetc? I don't really use C++ constructs, so in C it would be (and I'm just writing this on the fly so expect some errors):

#include <stdio.h>
#include <stdlib.h>

int main() {

char myChar;
FILE *in = fopen("myfile.txt", "r"); // Open myfile.txt read-only
while((myChar=fgetc(in)) != EOF) {
if(myChar=='\n') printf("\n");
else printf("%c",myChar);
}
return 0;
}

File: myfile.txt

  1. this is
  2. data
  3. hehe

%./a.out
this is
data
hehe


If you want to break after the first line:

#include <stdio.h>
#include <stdlib.h>

int main() {

char myChar;
FILE *in = fopen("myfile.txt", "r"); // Open myfile.txt read-only
while((myChar=fgetc(in)) != EOF) {
if(myChar=='\n') {
printf("\n");
break;
} else printf("%c",myChar);
}
return 0;
}
Last edited by subtronic; Oct 10th, 2003 at 7:02 pm.
Reputation Points: 44
Solved Threads: 1
Junior Poster
subtronic is offline Offline
117 posts
since Aug 2003
Oct 10th, 2003
0

Re: read to end of line problem

Replace

  1. infile >> temp;

with

  1. temp = infile.get() ;

That should do the trick.
Reputation Points: 13
Solved Threads: 0
Light Poster
Dante Shamest is offline Offline
46 posts
since Apr 2003
Oct 11th, 2003
0

Re: read to end of line problem

temp = infile.get() works perfectly. Thanks a ton. If you don't mind though could you explain the difference? I don't understand why one works and one doesn't. I appreciate it.

Tim
Reputation Points: 10
Solved Threads: 0
Newbie Poster
one1082 is offline Offline
2 posts
since Oct 2003
Mar 25th, 2008
0

Re: read to end of line problem

The reason that
temp = infile.get()
works and
infile >> temp
does not is because the >> operator ignores whitespace and new lines. get() reads in every character, no matter what
Reputation Points: 10
Solved Threads: 0
Newbie Poster
kwvanderlinde is offline Offline
1 posts
since Mar 2008
Mar 29th, 2008
0

Re: read to end of line problem

Thank the gods.

Someone finally answered this question that we've all been struggling with this for 4 1/2 long years,

what a relief.

someone let Tim know he can mark this as "solved"
Reputation Points: 2143
Solved Threads: 178
Posting Maven
jephthah is offline Offline
2,567 posts
since Feb 2008

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: Searching and Updating a File
Next Thread in C Forum Timeline: problem with freeing memory





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


Follow us on Twitter


© 2011 DaniWeb® LLC