Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. How to insert a "#" to some lines ?

How to insert a "#" to some lines ?

Scheduled Pinned Locked Moved C / C++ / MFC
tutorialquestion
13 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Faez Shingeri

    Hi, Is there a built-in string function to insert a # to all the lines which starts with string READ and ends with .(period) Eg:abc.txt

    asadf
    sdf
    READ abc asdj ads //This lines needs to be preeded with #
    asdkl asdj //This lines needs to be preeded with #
    djshf . //This lines needs to be preeded with #

    EOF

    followed by substituion of a string.. Thanks in advance

    W Offline
    W Offline
    wangningyu
    wrote on last edited by
    #2

    try to use CStdioFile::ReadString to read one line once. :)

    F 1 Reply Last reply
    0
    • F Faez Shingeri

      Hi, Is there a built-in string function to insert a # to all the lines which starts with string READ and ends with .(period) Eg:abc.txt

      asadf
      sdf
      READ abc asdj ads //This lines needs to be preeded with #
      asdkl asdj //This lines needs to be preeded with #
      djshf . //This lines needs to be preeded with #

      EOF

      followed by substituion of a string.. Thanks in advance

      C Offline
      C Offline
      CPallini
      wrote on last edited by
      #3

      No, there isn't. However it should be relatively simple to implement yourself.

      Veni, vidi, vici.

      1 Reply Last reply
      0
      • W wangningyu

        try to use CStdioFile::ReadString to read one line once. :)

        F Offline
        F Offline
        Faez Shingeri
        wrote on last edited by
        #4

        Need to code it in C :)

        D 1 Reply Last reply
        0
        • F Faez Shingeri

          Need to code it in C :)

          D Offline
          D Offline
          David Crow
          wrote on last edited by
          #5

          So what do you have so far? You'll find far more people willing to critique existing code than those willing to do your work outright for you.

          "One man's wage rise is another man's price increase." - Harold Wilson

          "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

          "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

          F 1 Reply Last reply
          0
          • D David Crow

            So what do you have so far? You'll find far more people willing to critique existing code than those willing to do your work outright for you.

            "One man's wage rise is another man's price increase." - Harold Wilson

            "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

            "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

            F Offline
            F Offline
            Faez Shingeri
            wrote on last edited by
            #6

            I shall henceforth post the code instantly while asking a new question next time:) BTW here is my code and I think am lost... :sigh:

            #include #include #define MAX_LEN_SINGLE_LINE 120
            #define bufsize 1024

            int main()
            {

             char fileOrig\[32\] = "test.txt";
             char fileRepl\[32\] = "myReplacedFile.txt";
            
             const char text2find\[80\] = " READ ";
             const char text2repl\[80\] = "# READ ";
             int c, line=0;
            
                char buffer\[MAX\_LEN\_SINGLE\_LINE+2\];
                char \*buff\_ptr, \*find\_ptr, \*tok;
                FILE \*fp1, \*fp2;
                size\_t find\_len = strlen(text2find);
            
                fp1 = fopen(fileOrig,"r+");
                fp2 = fopen(fileRepl,"w+");
                int i;
            
            
                while(fgets(buffer,MAX\_LEN\_SINGLE\_LINE+2,fp1))
                {
                    buff\_ptr = buffer;
            
                   	while ((find\_ptr = strstr(buff\_ptr,text2find)))
                   	{
                   		while ((c = fgetc(fp1)) == '.')
                   		{
                   			if (c == '\\n')
                   				fputc("#",fp2);
                   			else ;
                   		}
            
                    		while(buff\_ptr < find\_ptr)
                            fputc((int)\*buff\_ptr++,fp2);
            
                    	fputs(text2repl,fp2);
            
                        buff\_ptr += find\_len;
            
                    }
                    	fputs(buff\_ptr,fp2);
            
                }
            
            
            
               fclose(fp2);
               fclose(fp1);
               return 0;
            

            }

            Thanks in advance, Faez

            D 1 Reply Last reply
            0
            • F Faez Shingeri

              I shall henceforth post the code instantly while asking a new question next time:) BTW here is my code and I think am lost... :sigh:

              #include #include #define MAX_LEN_SINGLE_LINE 120
              #define bufsize 1024

              int main()
              {

               char fileOrig\[32\] = "test.txt";
               char fileRepl\[32\] = "myReplacedFile.txt";
              
               const char text2find\[80\] = " READ ";
               const char text2repl\[80\] = "# READ ";
               int c, line=0;
              
                  char buffer\[MAX\_LEN\_SINGLE\_LINE+2\];
                  char \*buff\_ptr, \*find\_ptr, \*tok;
                  FILE \*fp1, \*fp2;
                  size\_t find\_len = strlen(text2find);
              
                  fp1 = fopen(fileOrig,"r+");
                  fp2 = fopen(fileRepl,"w+");
                  int i;
              
              
                  while(fgets(buffer,MAX\_LEN\_SINGLE\_LINE+2,fp1))
                  {
                      buff\_ptr = buffer;
              
                     	while ((find\_ptr = strstr(buff\_ptr,text2find)))
                     	{
                     		while ((c = fgetc(fp1)) == '.')
                     		{
                     			if (c == '\\n')
                     				fputc("#",fp2);
                     			else ;
                     		}
              
                      		while(buff\_ptr < find\_ptr)
                              fputc((int)\*buff\_ptr++,fp2);
              
                      	fputs(text2repl,fp2);
              
                          buff\_ptr += find\_len;
              
                      }
                      	fputs(buff\_ptr,fp2);
              
                  }
              
              
              
                 fclose(fp2);
                 fclose(fp1);
                 return 0;
              

              }

              Thanks in advance, Faez

              D Offline
              D Offline
              David Crow
              wrote on last edited by
              #7

              How about something a tad smaller, like:

              BOOL bPrefix = FALSE;

              while(fgets(buffer, sizeof(buffer), fp1))
              {
              if (strncmp(buffer, "READ", 4) == 0)
              bPrefix = TRUE;
              else if (buffer[strlen(buffer) - 1] == '.')
              bPrefix = FALSE;

              if (bPrefix)
                  fputc('#', fp2);
              
              fputs(buffer, fp2);
              

              }

              I've not tested it, but hopefully you get the idea.

              "One man's wage rise is another man's price increase." - Harold Wilson

              "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

              "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

              F 1 Reply Last reply
              0
              • D David Crow

                How about something a tad smaller, like:

                BOOL bPrefix = FALSE;

                while(fgets(buffer, sizeof(buffer), fp1))
                {
                if (strncmp(buffer, "READ", 4) == 0)
                bPrefix = TRUE;
                else if (buffer[strlen(buffer) - 1] == '.')
                bPrefix = FALSE;

                if (bPrefix)
                    fputc('#', fp2);
                
                fputs(buffer, fp2);
                

                }

                I've not tested it, but hopefully you get the idea.

                "One man's wage rise is another man's price increase." - Harold Wilson

                "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

                F Offline
                F Offline
                Faez Shingeri
                wrote on last edited by
                #8

                There are no changes in the new file at all :| Also, there are multiple instance of READ such as END-READ etc whose line should not be precceded with # I aint understanding how the current file pointer can be incremented till a "\n" or "." :confused:

                D 1 Reply Last reply
                0
                • F Faez Shingeri

                  There are no changes in the new file at all :| Also, there are multiple instance of READ such as END-READ etc whose line should not be precceded with # I aint understanding how the current file pointer can be incremented till a "\n" or "." :confused:

                  D Offline
                  D Offline
                  David Crow
                  wrote on last edited by
                  #9

                  Faez Shingeri wrote:

                  There are no changes in the new file at all :|

                  Use the debugger to step through the code line by line to see what is happening along the way.

                  Faez Shingeri wrote:

                  Also, there are multiple instance of READ such as END-READ etc whose line should not be precceded with #

                  The code snippet I provided only precedes those lines that start with READ.

                  Faez Shingeri wrote:

                  I aint understanding how the current file pointer can be incremented till a "\n" or "." :confused:

                  fgets() internally increments the file pointer.

                  "One man's wage rise is another man's price increase." - Harold Wilson

                  "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                  "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

                  F 2 Replies Last reply
                  0
                  • D David Crow

                    Faez Shingeri wrote:

                    There are no changes in the new file at all :|

                    Use the debugger to step through the code line by line to see what is happening along the way.

                    Faez Shingeri wrote:

                    Also, there are multiple instance of READ such as END-READ etc whose line should not be precceded with #

                    The code snippet I provided only precedes those lines that start with READ.

                    Faez Shingeri wrote:

                    I aint understanding how the current file pointer can be incremented till a "\n" or "." :confused:

                    fgets() internally increments the file pointer.

                    "One man's wage rise is another man's price increase." - Harold Wilson

                    "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                    "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

                    F Offline
                    F Offline
                    Faez Shingeri
                    wrote on last edited by
                    #10

                    Nothing helped... Tried alot of trial and error but the o/p refuses to roll out as expected.. :^)

                    1 Reply Last reply
                    0
                    • D David Crow

                      Faez Shingeri wrote:

                      There are no changes in the new file at all :|

                      Use the debugger to step through the code line by line to see what is happening along the way.

                      Faez Shingeri wrote:

                      Also, there are multiple instance of READ such as END-READ etc whose line should not be precceded with #

                      The code snippet I provided only precedes those lines that start with READ.

                      Faez Shingeri wrote:

                      I aint understanding how the current file pointer can be incremented till a "\n" or "." :confused:

                      fgets() internally increments the file pointer.

                      "One man's wage rise is another man's price increase." - Harold Wilson

                      "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                      "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

                      F Offline
                      F Offline
                      Faez Shingeri
                      wrote on last edited by
                      #11

                      It's working great now .. :-D Thnx alot for help

                      D 1 Reply Last reply
                      0
                      • F Faez Shingeri

                        It's working great now .. :-D Thnx alot for help

                        D Offline
                        D Offline
                        David Crow
                        wrote on last edited by
                        #12

                        So what did you end up with (to get it all going)?

                        "One man's wage rise is another man's price increase." - Harold Wilson

                        "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                        "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

                        F 1 Reply Last reply
                        0
                        • D David Crow

                          So what did you end up with (to get it all going)?

                          "One man's wage rise is another man's price increase." - Harold Wilson

                          "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                          "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

                          F Offline
                          F Offline
                          Faez Shingeri
                          wrote on last edited by
                          #13

                          while(fgets(buffer,MAX_LEN_SINGLE_LINE+2,fp1))
                          {
                          buff_ptr = buffer;
                          strcpy(buffer2,buffer);
                          //Remove Spaces from start for comparision
                          i = 0;
                          while( i++ < strlen(buffer))
                          {
                          if(isspace(buffer[i]))
                          continue;
                          strcpy(buffer2,&(buffer[i]));
                          break;
                          }
                          if(strncmp(buffer2,"READ",4) == 0)
                          {
                          found = true;
                          sprintf(buffer1,"# %s",buffer);
                          fputs(buffer1,fp2);
                          }
                          else if(found == false)
                          {
                          fputs(buffer,fp2);
                          }
                          else
                          {
                          sprintf(buffer1,"# %s",buffer);
                          fputs(buffer1,fp2);
                          // Search if "." is found.
                          if(strstr(buffer,".") != NULL)
                          found = false;
                          }
                          }

                          Alot of thanks to Chandrakantt also in helping me in this one..

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups