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

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

    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 1 Reply Last reply
    0
    • 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