| Author | Message | 
		 
		| jin 
 
 
 
 
 | 
			
				|  Posted: Sat Nov 04, 2006 5:36 pm    Post subject: cstring question |  |   
				| 
 |  
				| Hey i am tryin to read in a file and store the letters in a 2Ds ctstring. So that words[word number][number of letters]. In java i would have used a string tokenizer to determine when a word finishes and the next starts. Any help is appreciated. 
 thnx.
 |  
				|  |  | 
	 
		|  |  | 
	
 
		|  | 
		 
		| Sponsor Sponsor
 
  
   |  | 
	 
		|  | 
				 
		| md 
 
  
 
 
 | 
			
				|  Posted: Sat Nov 04, 2006 7:11 pm    Post subject: (No subject) |  |   
				| 
 |  
				| You could use std::strings instead of character strings. And use std::vector instead of an array, it automatically manages it's size. |  
				|  |  | 
	 
		|  |  | 
	
 
		|  | 
				 
		| wtd 
 
 
 
 
 | 
			
				|  Posted: Sat Nov 04, 2006 7:16 pm    Post subject: (No subject) |  |   
				| 
 |  
				| Unless of course this question is limited to C. |  
				|  |  | 
	 
		|  |  | 
	
 
		|  | 
				 
		| jin 
 
 
 
 
 | 
			
				|  Posted: Sat Nov 04, 2006 7:34 pm    Post subject: (No subject) |  |   
				| 
 |  
				| thnx for the reply but i havent yet learned about std::string and std::vector. i think i might have gotten it. 
 
 	  | code: |  	  | 
 int y = 0;
 int x = 0;
 char letter;
 
 while (! inFile.eof())
 {
 inFile.get (letter);
 
 if (!isspace(letter))
 {
 words [x] [y] = letter;
 y++;
 }
 
 else
 {
 y=0;
 x++;
 }
 }
 
 
 | 
 
 This is what i have so far and it works if there is one space between characters but if there is more. it saves the space in the variable. Any thoughts.
 
 thnx
 |  
				|  |  | 
	 
		|  |  | 
	
 
		|  | 
				 
		| jin 
 
 
 
 
 | 
			
				|  Posted: Sat Nov 04, 2006 9:45 pm    Post subject: (No subject) |  |   
				| 
 |  
				| File contents are: abc <space> def  <space><space>ghi <enter>
 
 the output i get is:
 abc
 def
 <empty line>
 ghi
 
 the output i need is:
 abc
 def
 ghi
 
 thnx.
 |  
				|  |  | 
	 
		|  |  | 
	
 
		|  | 
				 
		| wtd 
 
 
 
 
 | 
			
				|  Posted: Sun Nov 05, 2006 9:51 am    Post subject: (No subject) |  |   
				| 
 |  
				| First off, let's try formatting this code nicely. 
 
 	  | code: |  	  | int y = 0;
int x = 0;
 char letter;
 
 while (!inFile.eof())
 {
 inFile.get(letter);
 
 if (!isspace(letter))
 {
 words[x][y] = letter;
 y++;
 }
 else
 {
 y = 0;
 x++;
 }
 }
 | 
 
 Now, let's step through what happens on input of:
 
 
 
 
 	  | code: |  	  | x = 0
y = 0
 letter = 'a'
 'a' is not a space
 words[0][0] = 'a'
 y = 1
 
 x = 0
 y = 1
 letter = 'b'
 'a' is not a space
 words[0][1] = 'b'
 y = 2
 
 x = 0
 y = 2
 letter = 'c'
 'c' is not a space
 words[0][2] = 'c'
 y = 3
 
 x = 0
 y = 3
 letter = ' '
 ' ' is a space
 y = 0
 x = 1
 
 x = 1
 y = 0
 letter = 'd'
 'd' is not a space
 words[1][0] = 'd'
 y = 1
 
 x = 1
 y = 1
 letter = 'e'
 'e' is not a space
 words[1][1] = 'e'
 y = 2
 
 x = 1
 y = 2
 letter = 'f'
 'f' is not a space
 words[1][2] = 'f'
 y = 3
 
 x = 1
 y = 3
 letter = ' '
 ' ' is a space
 y = 0
 x = 2
 
 x = 2
 y = 0
 letter = ' '
 ' ' is a space
 y = 0
 x = 3
 
 x = 3
 y = 0
 letter = 'g'
 'g' is not a space
 words[3][0] = 'g'
 y = 1
 
 x = 3
 y = 1
 letter = 'h'
 'h' is not a space
 words[3][1] = 'h'
 y = 2
 
 x = 3
 y = 2
 letter = 'i'
 'i' is not a space
 words[3][2] = 'i'
 y = 3
 | 
 
 Now, do you see where the error is occurring?
 |  
				|  |  | 
	 
		|  |  | 
	
 
		|  | 
				 
		| OneOffDriveByPoster 
 
 
 
 
 | 
			
				|  Posted: Sun Nov 05, 2006 10:06 am    Post subject: (No subject) |  |   
				| 
 |  
				| @jin: 
 if using C++, look into iostream too;
 
 if using C, look into scanf (careful what you do with it though).
 
 In your current program:
 To get rid of the extra spaces, simply read away all spaces before a word.
 (A loop will do).  ungetc() can help.
 |  
				|  |  | 
	 
		|  |  | 
	
 
		|  | 
				 
		| jin 
 
 
 
 
 | 
			
				|  Posted: Sun Nov 05, 2006 10:45 am    Post subject: (No subject) |  |   
				| 
 |  
				| thnx for all your help i got it working now. |  
				|  |  | 
	 
		|  |  | 
	
 
		|  | 
		 
		| Sponsor Sponsor
 
  
   |  | 
	 
		|  | 
				 
		|  |