2
strcpy((*pointeur).caractere, x);

tostrcpyの値をコピーするために使用し、構造体を定義しますx(*pointeur).caractere

typedef struct cle{
    char caractere;
    int compteur;
    struct cle *suivant;
}cle_t;

ポインタを宣言します

cle_t *pointeur;

しかし、コンパイラは私に言った

「'char' から 'char*' への無効な変換です」

"`char* strcpy(char*, const char*)' の引数 1 を初期化しています"

何が悪いのか理解できません... みんなありがとう〜

4

3 に答える 3

2

サルート

caractereは文字であり、strcpy文字列を操作します。あなたがしたいことに応じて、2つの解決策があります(あなたの識別子では、あなたはむしろ最初のケースにいると思います)。

  • xが の場合char、使用します (文字をコピー pointeur->caractere = xする必要はありません)。strcpy
  • xが achar*または a の場合、十分な長さの文字列として (つまり、動的に割り当てられた の配列または へのポインターを使用してchar[]) 宣言すると、 を呼び出すことができます。caracterecharcharstrcpy
于 2012-11-10T15:55:38.900 に答える
0
strcpy((*pointeur).caractere, x);

これは問題なく動作しますがcaracterechar *またはchar[]

ここに宣言がありますstrcpy()

char *strcpy(char *dest, const char *src);

caractereまた、 として作成している場合はchar*、メモリを割り当てるようにしてください。他の方法で使用strcpy()するとundefined behaviourseg fault

もう1つ:ポインタを作成している場合は、演算子をstruct直接使用->してデータメンバーにアクセスできます

于 2012-11-10T16:00:20.527 に答える