0

Hi All,
I'm not an expert in C, and what I need to do is the following.

I have a certain large .txt file that has many lines (sometimes the lines are separated with one empty line, sometimes two, sometimes 3,...etc. Some of these lines have "= 9999999999" at their end.

What I need to do is to eliminate such lines (the lines that have "= 9999999999" at their ends).

I'm thinking of reading each line, storing it, checking whether it has that string at its end of not, and then pasting it in a new file if it doesn't (and not doing anything if it does), and so on. That way, at the end I will have a new file that has what I want.

My questions are:

1. What would be the code for reading a whole line?
2. How can I store each line? I mean should I store it in a string or what exactly?
3. How can I search that string or whatever I store that line in, for that certain string on interest at its end ("= 9999999999"). I mean what would the code be in that case?

Thanks a lot and sorry for asking too much!

Aly

2
Contributors
4
Replies
6
Views
6 Years
Discussion Span
Last Post by amegahed3
0

Note: Untested and uncompiled code below. Use at your own risk.

FILE* fp = fopen("file.txt","r");
char line[255];
while( fgets(line, sizeof(line), fp) )
{
   int len = strlen(line);
   if( line[len-1] == '\n')
   {
      line[len-1] = 0;
      --len;
   }
   // make test for "= 9999999999" here
   if( (len > 13) && strcmp(&line[len-14],"= 9999999999") == 0)
        ; // do nothing
   else
   {
       // the line is ok, so write it to the output file

   }
}
0

Thanks a lot, ancient dragon.

My question is: for line 16, I do have to write a code for writing the line in an output file, don't I?

And if so, what would that code be, if you don't mind mentioning that?

Thanks,
Aly

0

Thanks for your help.
I completed the code and I think it works now as I want it to, but I'd appreciate any feedback :-)

Here is the code:

int main (void)
{
 ofstream fout("generator_without_infinities.txt");
      FILE* fp = fopen("generator.txt","r");
   
      char line[1000000];
   
      while( fgets(line, sizeof(line), fp) )
   
      {
   
      int len = strlen(line);
   
      if( line[len-1] == '\n')
   
      {
   
      line[len-1] = 0;
  
      --len;
  
      }
  
      // make test for "= 9999999999" here
  
      if( (len > 12) && strcmp(&line[len-12],"= 9999999999") == 0)
  
      ; // do nothing
  
      else
  
      {
  
      // the line is ok, so write it to the output file
  
      
	   fout<<line;
	fout<<"\n";
      }
  
	  }




	


	return 0;
}

Aly

Edited by Nick Evan: Fixed the closing tag. It's [CODE] ...code goes here.... [/CODE]

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.