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. managing char arrays

managing char arrays

Scheduled Pinned Locked Moved C / C++ / MFC
questiondata-structureshelptutorial
14 Posts 5 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.
  • S S Senthil Kumar

    You can't. It's not possible to store a string as an element in a character array. Maybe what you're looking for is an array of char * ? Regards Senthil _____________________________ My Blog | My Articles | WinMacro

    E Offline
    E Offline
    elephantstar
    wrote on last edited by
    #5

    Yes, I do have an array of characters. I need to convert the ASCII value which is currently a string value to an ASCII character. Then store that ASCII character into the 18th element of the array. How do I go about doing that?

    D 1 Reply Last reply
    0
    • E elephantstar

      How can I convert a string to an ASCII value and then store it in an element of a char array? For example, I'd like the 30 to be stored in element[18] of the array. This is what I have. Thanks! char array[20]; array = "Supernatural"; CString str = "40"; strcpy(array[18],str); error C2664: 'strcpy' : cannot convert parameter 1 from 'char' to 'char *'

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

      elephantstar wrote: array = "Supernatural"; What is this, other than a syntax error? If you want array to contain the string literal, use either of:

      char array[20] = "Supernatural";
      ...
      char array[20];
      strcpy(array, "Supernatural");

      elephantstar wrote: strcpy(array[18],str); The error message tells you exactly what the problem is. array[18] is a char, but the first parameter of strcpy() is supposed to be a char*. Why are you using char in such a fashion? If this is an MFC application, use CString. Mixing the two types is seldom necessary.


      "One must learn from the bite of the fire to leave it alone." - Native American Proverb

      E 1 Reply Last reply
      0
      • E elephantstar

        Yes, I do have an array of characters. I need to convert the ASCII value which is currently a string value to an ASCII character. Then store that ASCII character into the 18th element of the array. How do I go about doing that?

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

        Are you talking about this:

        CString str = "40";
        array[18] = atoi(str);


        "One must learn from the bite of the fire to leave it alone." - Native American Proverb

        1 Reply Last reply
        0
        • T toxcct

          yes he can. CString class provides a LPTSTR cast operator... so using strcpy() is possible as it uses this way 2 char arrays...


          TOXCCT >>> GEII power
          [toxcct][VisualCalc]

          S Offline
          S Offline
          S Senthil Kumar
          wrote on last edited by
          #8

          No he can't :). It's not possible to store a string as an element in an array of characters. From what I understood, the OP wants to do this

          char arr[20] = "Senthil";
          arr[5] = "Kumar";

          which isn't logically possible. Regards Senthil _____________________________ My Blog | My Articles | WinMacro

          T 1 Reply Last reply
          0
          • D David Crow

            elephantstar wrote: array = "Supernatural"; What is this, other than a syntax error? If you want array to contain the string literal, use either of:

            char array[20] = "Supernatural";
            ...
            char array[20];
            strcpy(array, "Supernatural");

            elephantstar wrote: strcpy(array[18],str); The error message tells you exactly what the problem is. array[18] is a char, but the first parameter of strcpy() is supposed to be a char*. Why are you using char in such a fashion? If this is an MFC application, use CString. Mixing the two types is seldom necessary.


            "One must learn from the bite of the fire to leave it alone." - Native American Proverb

            E Offline
            E Offline
            elephantstar
            wrote on last edited by
            #9

            I want to store the value of CString str into the array. vtValue.ChangeType(VT_BSTR); str = (LPCSTR)((_bstr_t)vtValue.bstrVal); Then I want to store the exact same data type into array[18]. Yes, it is an MFC application. I'm using char so that I can manipulate the data in each element easily.

            D 1 Reply Last reply
            0
            • E elephantstar

              I want to store the value of CString str into the array. vtValue.ChangeType(VT_BSTR); str = (LPCSTR)((_bstr_t)vtValue.bstrVal); Then I want to store the exact same data type into array[18]. Yes, it is an MFC application. I'm using char so that I can manipulate the data in each element easily.

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

              elephantstar wrote: vtValue.ChangeType(VT_BSTR); str = (LPCSTR)((_bstr_t)vtValue.bstrVal); What's with all of the BSTR and VARIANT stuff? Is this part of the original problem? elephantstar wrote: I'm using char so that I can manipulate the data in each element easily. CString objects can be manipulated just as easily.


              "One must learn from the bite of the fire to leave it alone." - Native American Proverb

              E 1 Reply Last reply
              0
              • D David Crow

                elephantstar wrote: vtValue.ChangeType(VT_BSTR); str = (LPCSTR)((_bstr_t)vtValue.bstrVal); What's with all of the BSTR and VARIANT stuff? Is this part of the original problem? elephantstar wrote: I'm using char so that I can manipulate the data in each element easily. CString objects can be manipulated just as easily.


                "One must learn from the bite of the fire to leave it alone." - Native American Proverb

                E Offline
                E Offline
                elephantstar
                wrote on last edited by
                #11

                Sorry, I should have included the rest of the code. I'm using ADO to query some values. CString str, str2; _variant_t vtValue; vtValue = t_Rec->Fields->GetItem("NAME")->GetValue(); vtValue.ChangeType(VT_BSTR); str = (LPCSTR)((_bstr_t)vtValue.bstrVal); Instead of using char array[20], you're suggesting I just work with CString then. But if I do use CString, the following code fails. What am I doing wrong? Thanks.

                vtValue = t_Rec->Fields->GetItem("NUMBER")->GetValue();
                vtValue.ChangeType(VT_BSTR);
                str2 = (LPTSTR)((_bstr_t)vtValue.bstrVal);
                char x;
                x = atoi(str2);
                str.GetAt(18, str2); ///Debug Assertion Failed

                D 1 Reply Last reply
                0
                • E elephantstar

                  Sorry, I should have included the rest of the code. I'm using ADO to query some values. CString str, str2; _variant_t vtValue; vtValue = t_Rec->Fields->GetItem("NAME")->GetValue(); vtValue.ChangeType(VT_BSTR); str = (LPCSTR)((_bstr_t)vtValue.bstrVal); Instead of using char array[20], you're suggesting I just work with CString then. But if I do use CString, the following code fails. What am I doing wrong? Thanks.

                  vtValue = t_Rec->Fields->GetItem("NUMBER")->GetValue();
                  vtValue.ChangeType(VT_BSTR);
                  str2 = (LPTSTR)((_bstr_t)vtValue.bstrVal);
                  char x;
                  x = atoi(str2);
                  str.GetAt(18, str2); ///Debug Assertion Failed

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

                  elephantstar wrote: str.GetAt(18, str2); ///Debug Assertion Failed This must be .Net as the CString::GetAt() method that comes with VC++ v6 only takes one parameter. In any case, what line of what file is firing the assertion?


                  "One must learn from the bite of the fire to leave it alone." - Native American Proverb

                  E 1 Reply Last reply
                  0
                  • D David Crow

                    elephantstar wrote: str.GetAt(18, str2); ///Debug Assertion Failed This must be .Net as the CString::GetAt() method that comes with VC++ v6 only takes one parameter. In any case, what line of what file is firing the assertion?


                    "One must learn from the bite of the fire to leave it alone." - Native American Proverb

                    E Offline
                    E Offline
                    elephantstar
                    wrote on last edited by
                    #13

                    Nevermind. I went back to using char and it works just fine. Thanks Dave! Your help is always appreciated.

                    1 Reply Last reply
                    0
                    • S S Senthil Kumar

                      No he can't :). It's not possible to store a string as an element in an array of characters. From what I understood, the OP wants to do this

                      char arr[20] = "Senthil";
                      arr[5] = "Kumar";

                      which isn't logically possible. Regards Senthil _____________________________ My Blog | My Articles | WinMacro

                      T Offline
                      T Offline
                      toxcct
                      wrote on last edited by
                      #14

                      oh yes, i did this it like this. i saw (arr + 5) = "Kumar"; which would mean writing from the 5th position in the array. but ok, you're right, i appology.


                      TOXCCT >>> GEII power
                      [toxcct][VisualCalc]

                      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