重複の可能性:
Cのchars[]とchar*sの違いは何ですか?
char * str =“…”とchar str [N] =“…”の違いは?
私は次のように定義された構造を持っています:
typedef struct
{
bool configured;
bool active;
uint32 lastComms;
uint32 rxChRvdTime;
char *name;
}vehicle;
そして私はそれを次のように初期化します:
static vehicle *myVehicle;
名前を初期化するときは、次を使用します。
myVehicle->name = "helloworld";
そして、これはうまくいきます。しかし、文字列リテラル以外に設定したくない場合は、問題が発生するようです。
char *tmpName = "foobar";
strcpy(myVehicle->name, tmpName);
では、なぜstrcpyが機能しないのですか?どういうわけか、事前に構造内の文字列サイズを事前に割り当てる必要がありますか?車両は1台しか存在できないため、「名前」フィールドにポインターを使用するべきではありませんか?