Dear Jiri
Thank you for your suggestion. However, I had already tried this before
sending this mail and it did not work either.
It seems that I made a trivial mistake, since Victor Perevoztchikov
suggested
to me to replace str = "A" with str = 'A', and this solved my problem.
I am not sure if there could be a memory problem with this solution. At the
moment it works perfectly fine.
Thank you both once again.
Best regards
Christian
Jiri Masik wrote:
>cstrato <cstrato@EUnet.at> writes:
>
>>--------------020908090703030104030905
>>Content-Type: text/plain; charset=us-ascii; format=flowed
>>Content-Transfer-Encoding: 7bit
>>
>>Dear Rooters
>>
>>The following macro CharArray() below runs perfectly fine as macro,
>>but I am not able to compile it. I get the error:
>>"assignment to `char' from `const char *' lacks a cast"
>>However, casting "str" to "char(str)" causes a different error.
>>
>>Since I have to store letters read from an input file as character
>>array "arrStr" in my code, my question is:
>>What is wrong in my code example?
>>How do I have to rewrite the code?
>>Since I have to use "sscanf()", how do I access "str"?
>>
>>Thank you in advance for your help.
>>(MacOSX running root 3.03/05)
>>
>>
>>Best regards
>>Christian
>>-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
>>C.h.r.i.s.t.i.a.n. .S.t.r.a.t.o.w.a
>>V.i.e.n.n.a. .A.u.s.t.r.i.a
>>-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
>>
>>
>>//-----------CharArray---------------
>>void CharArray()
>>{
>> char str = "A";
>> char *arrStr = new char[20];
>>
>>// initialize array
>> Int_t i;
>> for (i=0; i<20; i++) {
>> arrStr[i] = str;
>>// arrStr[i] = str + i;
>> }
>>
>> for (i=0; i<20; i++) {
>> cout << arrStr[i];
>> }
>> cout << endl;
>>
>>// read letters from input
>> char nextline[128];
>> ifstream input;
>> input.open("ABC.txt", ios::in);
>> for (i=0; i<20; i++) {
>> input.getline(nextline, 128);
>> sscanf(nextline, "%c \n", &str);
>> arrStr[i] = str;
>> }
>> input.close();
>>
>> for (i=0; i<20; i++) {
>> cout << arrStr[i];
>> }
>> cout << endl;
>>
>> delete [] arrStr;
>>}//CharArray
>>
>>
>
>Hi Christian,
>
>this is because the string constant "A" is allocated as const char*.
>You can make work the first part by changing char str to
>char *str and modify the rest accordingly.
>
>Please note that for the second part where you try to modify contents
>of str you need to allocate memory yourself. The place where "A"
>resides is not writable.
>
>cheers
> Jiri
>
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:54 MET