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. string concatenation using pointer

string concatenation using pointer

Scheduled Pinned Locked Moved C / C++ / MFC
help
21 Posts 7 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.
  • H hrishiS

    Hi to All, Here I am getting an error. Breaking my head but not able to get it done. Please help me out with. I know I have done some silly mistake,..But not able to view it Mu code is... char *a,*b,*temp; a="aa"; b="bb"; while(*a!='\0') { *temp++ = *a++; } while(*b!='\0') { *temp++ = *b++; } *temp = '\0'; .... its showing error in the line...*temp++ = *a++; Thanks in advance

    R Offline
    R Offline
    rrrado
    wrote on last edited by
    #4

    What error? I cannot see syntactic error there. Do you allocate memory for temp?

    H 1 Reply Last reply
    0
    • R rrrado

      What error? I cannot see syntactic error there. Do you allocate memory for temp?

      H Offline
      H Offline
      hrishiS
      wrote on last edited by
      #5

      I am getting an runtime error... (Unhandled exception...Access violation)

      1 Reply Last reply
      0
      • H hrishiS

        Hi to All, Here I am getting an error. Breaking my head but not able to get it done. Please help me out with. I know I have done some silly mistake,..But not able to view it Mu code is... char *a,*b,*temp; a="aa"; b="bb"; while(*a!='\0') { *temp++ = *a++; } while(*b!='\0') { *temp++ = *b++; } *temp = '\0'; .... its showing error in the line...*temp++ = *a++; Thanks in advance

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

        You should must allocate memory for temp. :)

        If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
        This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
        [My articles]

        H 1 Reply Last reply
        0
        • H hrishiS

          Thnaks for your reply I am getting an runtime error... (Unhandled exception...Access violation) Thanks...(anyway,..My brothers name is Anshumaan)

          ----------------------------- I am a beginner

          _ Offline
          _ Offline
          _AnsHUMAN_
          wrote on last edited by
          #7

          Ah! that may be because temp is not initialized. Initialize it! And believe it or not, but my brothers name is HIMANGSHU

          You need to google first, if you have "It's urgent please" mentioned in your question. ;-)_AnShUmAn_

          H 1 Reply Last reply
          0
          • H hrishiS

            Hi to All, Here I am getting an error. Breaking my head but not able to get it done. Please help me out with. I know I have done some silly mistake,..But not able to view it Mu code is... char *a,*b,*temp; a="aa"; b="bb"; while(*a!='\0') { *temp++ = *a++; } while(*b!='\0') { *temp++ = *b++; } *temp = '\0'; .... its showing error in the line...*temp++ = *a++; Thanks in advance

            D Offline
            D Offline
            Divyang Mithaiwala
            wrote on last edited by
            #8

            A code you have past here is the exact code that is in your system? But if you have taken temp as array (char temp[XX]) then you might get error which you told. But a code that we are sawing has no that kind of error.


            Do not trust a computer... Always check what computer is doing regards, Divyang Mithaiwala Software Engineer

            modified on Thursday, May 7, 2009 5:38 AM

            C _ H 3 Replies Last reply
            0
            • D Divyang Mithaiwala

              A code you have past here is the exact code that is in your system? But if you have taken temp as array (char temp[XX]) then you might get error which you told. But a code that we are sawing has no that kind of error.


              Do not trust a computer... Always check what computer is doing regards, Divyang Mithaiwala Software Engineer

              modified on Thursday, May 7, 2009 5:38 AM

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

              Sure? :)

              If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
              This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
              [My articles]

              1 Reply Last reply
              0
              • C CPallini

                You should must allocate memory for temp. :)

                If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
                This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
                [My articles]

                H Offline
                H Offline
                hrishiS
                wrote on last edited by
                #10

                thanks But there is one problem. How much memory should I allocate? Since It is a program for concatenation of string...And I wont be knowing the no of characters after contcatination(ie the size of the temp) in advance. How to go about it?

                C S 2 Replies Last reply
                0
                • _ _AnsHUMAN_

                  Ah! that may be because temp is not initialized. Initialize it! And believe it or not, but my brothers name is HIMANGSHU

                  You need to google first, if you have "It's urgent please" mentioned in your question. ;-)_AnShUmAn_

                  H Offline
                  H Offline
                  hrishiS
                  wrote on last edited by
                  #11

                  thanks a lot... About the name..that's interesting...I feel somewhat to talk personal staff in this forum. Lets not violet the rules..hehe...Could you give me Gmail Id if you dont mind.We can talk in Gtalk . Regards, Himangshu

                  1 Reply Last reply
                  0
                  • D Divyang Mithaiwala

                    A code you have past here is the exact code that is in your system? But if you have taken temp as array (char temp[XX]) then you might get error which you told. But a code that we are sawing has no that kind of error.


                    Do not trust a computer... Always check what computer is doing regards, Divyang Mithaiwala Software Engineer

                    modified on Thursday, May 7, 2009 5:38 AM

                    _ Offline
                    _ Offline
                    _AnsHUMAN_
                    wrote on last edited by
                    #12

                    Divyang Mithaiwala wrote:

                    Because if you have taken temp as array (char temp[XX]) then you might get error

                    :doh: Why so?

                    Divyang Mithaiwala wrote:

                    But a code that we are sawing has no that kind of error.

                    Did you trust your computer to check if there was a runtime error? :)

                    You need to google first, if you have "It's urgent please" mentioned in your question. ;-)_AnShUmAn_

                    1 Reply Last reply
                    0
                    • D Divyang Mithaiwala

                      A code you have past here is the exact code that is in your system? But if you have taken temp as array (char temp[XX]) then you might get error which you told. But a code that we are sawing has no that kind of error.


                      Do not trust a computer... Always check what computer is doing regards, Divyang Mithaiwala Software Engineer

                      modified on Thursday, May 7, 2009 5:38 AM

                      H Offline
                      H Offline
                      hrishiS
                      wrote on last edited by
                      #13

                      sorry, But I really didnot get that

                      ----------------------------- I am a beginner

                      D 1 Reply Last reply
                      0
                      • H hrishiS

                        sorry, But I really didnot get that

                        ----------------------------- I am a beginner

                        D Offline
                        D Offline
                        Divyang Mithaiwala
                        wrote on last edited by
                        #14

                        When I was posted I haven't seen your clarification that you are facing run time error (due to no refresh page). So, If you have taken variable as char temp[10]; and try to execute *temp++ = *a++; it will give you compile time error.


                        Do not trust a computer... Always check what computer is doing regards, Divyang Mithaiwala Software Engineer

                        1 Reply Last reply
                        0
                        • H hrishiS

                          thanks But there is one problem. How much memory should I allocate? Since It is a program for concatenation of string...And I wont be knowing the no of characters after contcatination(ie the size of the temp) in advance. How to go about it?

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

                          Well you may allocate a predefined amount of memory (on statistical grounds) and then reallocate (for instance, in C language, you may use malloc and realloc) a bigger size if needed. BTW: you know, there are C runtime library functions for the purpose of concatenating strings. :)

                          If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
                          This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
                          [My articles]

                          H 2 Replies Last reply
                          0
                          • C CPallini

                            Well you may allocate a predefined amount of memory (on statistical grounds) and then reallocate (for instance, in C language, you may use malloc and realloc) a bigger size if needed. BTW: you know, there are C runtime library functions for the purpose of concatenating strings. :)

                            If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
                            This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
                            [My articles]

                            H Offline
                            H Offline
                            hrishiS
                            wrote on last edited by
                            #16

                            yes But I wanted to implement it with my own code....So that I learn pointer concept too..

                            ----------------------------- I am a beginner

                            1 Reply Last reply
                            0
                            • C CPallini

                              Well you may allocate a predefined amount of memory (on statistical grounds) and then reallocate (for instance, in C language, you may use malloc and realloc) a bigger size if needed. BTW: you know, there are C runtime library functions for the purpose of concatenating strings. :)

                              If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
                              This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
                              [My articles]

                              H Offline
                              H Offline
                              hrishiS
                              wrote on last edited by
                              #17

                              I used the following code.....No error but not giving any results char *a,*b; char *temp; temp=new char[5]; a="aa"; b="bb"; while(*a!='\0') { *temp++ =*a++ ; } while(*b!='\0') { *temp++= *b++ ; } *temp = '\0'; printf("%s",temp);

                              ----------------------------- I am a beginner

                              C 1 Reply Last reply
                              0
                              • H hrishiS

                                I used the following code.....No error but not giving any results char *a,*b; char *temp; temp=new char[5]; a="aa"; b="bb"; while(*a!='\0') { *temp++ =*a++ ; } while(*b!='\0') { *temp++= *b++ ; } *temp = '\0'; printf("%s",temp);

                                ----------------------------- I am a beginner

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

                                That's almost the solution... :rolleyes:, try:

                                char *a,*b;
                                char *temp, *dest;
                                dest=new char[5];
                                temp = dest;
                                a="aa";
                                b="bb";
                                while(*a!='\0')
                                {
                                *temp++ =*a++ ;
                                }
                                while(*b!='\0')
                                {
                                *temp++= *b++ ;
                                }
                                *temp = '\0';
                                printf("%s",dest);

                                of course you need now to generalize the code (ad remember to free dest when you no longer need it) :)

                                If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
                                This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
                                [My articles]

                                H 1 Reply Last reply
                                0
                                • H hrishiS

                                  thanks But there is one problem. How much memory should I allocate? Since It is a program for concatenation of string...And I wont be knowing the no of characters after contcatination(ie the size of the temp) in advance. How to go about it?

                                  S Offline
                                  S Offline
                                  Stuart Dootson
                                  wrote on last edited by
                                  #19

                                  himangshuS wrote:

                                  I wont be knowing the no of characters after contcatination(ie the size of the temp) in advance.

                                  Yes you can - you need to allocate strlen(A) + strlen(B) + 1 characters, where strlen is defined as follows:

                                  int strlen(const char* s)
                                  {
                                  int count;
                                  while (*(s++))
                                  ++count;
                                  }

                                  Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                                  1 Reply Last reply
                                  0
                                  • H hrishiS

                                    Hi to All, Here I am getting an error. Breaking my head but not able to get it done. Please help me out with. I know I have done some silly mistake,..But not able to view it Mu code is... char *a,*b,*temp; a="aa"; b="bb"; while(*a!='\0') { *temp++ = *a++; } while(*b!='\0') { *temp++ = *b++; } *temp = '\0'; .... its showing error in the line...*temp++ = *a++; Thanks in advance

                                    F Offline
                                    F Offline
                                    Fatbuddha 1
                                    wrote on last edited by
                                    #20

                                    I haven't tested that nor tried something similar, but I think that the hole think wont give you the right result anyway. By incrementing the char * temp it jumps to the next position and you will lose the previous position, don't you? So if you really want to do something like that you should have a pointer to the first position of temp (I guess). So why not simply allocate mem for temp and then do a memcpy with a and b? Given memcpy temp and for b &temp[2] for example. I hope this will do the trick, but I am just guessing. Cheers

                                    You have the thought that modern physics just relay on assumptions, that somehow depends on a smile of a cat, which isn’t there.( Albert Einstein)

                                    1 Reply Last reply
                                    0
                                    • C CPallini

                                      That's almost the solution... :rolleyes:, try:

                                      char *a,*b;
                                      char *temp, *dest;
                                      dest=new char[5];
                                      temp = dest;
                                      a="aa";
                                      b="bb";
                                      while(*a!='\0')
                                      {
                                      *temp++ =*a++ ;
                                      }
                                      while(*b!='\0')
                                      {
                                      *temp++= *b++ ;
                                      }
                                      *temp = '\0';
                                      printf("%s",dest);

                                      of course you need now to generalize the code (ad remember to free dest when you no longer need it) :)

                                      If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
                                      This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
                                      [My articles]

                                      H Offline
                                      H Offline
                                      hrishiS
                                      wrote on last edited by
                                      #21

                                      Oh thanks a lot...its working fine... I have to increase my knowledge towards pointer

                                      ----------------------------- I am a beginner

                                      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