Alpha IIMedlem sedan maj 20002 993 inlägg Håller på med programmeringsövningarna i c++ programmering av stephen prata.
Har en stucten box:
struct box
{
char maker[40];
float height;
float width;
float length;
float volume;
};
Förösker tilldela ett värde till maker men får felet:
Compiling...
main.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\kap7_kod3\main.cpp(20) : error C2440: '=' : cannot convert from 'char [12]' to 'char [40]'
There is no context in which this conversion is possible
Error executing cl.exe.
main.exe - 1 error(s), 0 warning(s)
Ska man inte kunna tilldela en sträng genom att skriva:
box.maker = "blablabla";
:q
Nej, det skall man inte kunna :P char maker[40]; är en vanlig array egentligen, och man kan inte tilldela dom på det viset med =-operatorn. För att kunna använda =-operatorn på strängar måste man skriva en speciell klass för det. I STL (Standard Template Library) kallas den för "string" (konstigt, eller hur? ;)).
Nåväl, när du vill tilldela ett värde till "maker" får du använda dig utav funtkionen strcpy(). http://www.cplusplus.com/ref/cstring/strcpy.html
Nexus86Medlem sedan okt. 20023 030 inlägg Alpha IIMedlem sedan maj 20002 993 inlägg Ok, tack det funkade bra med strcpy.
Får väl ta och titta lite på hur string funkar. HAr dock ingen använding av det för de3t här 40 rader långa programmeringsövningen :)
PeWMedlem sedan juni 200010 432 inlägg Vill du inte använda dig av string men behöver kopiera chararrayer, kan följande funktion användas:
(kopierar s2 till s1)
void copyMyString(unsigned char *s1,unsigned char *s2){
while((*(s1++)=*(s2++))!=0);
}