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 Offline
    F Offline
    Faez Shingeri
    wrote on last edited by
    #1

    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 C 2 Replies 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

      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