質問: num; i++; } ``` この場合どうやったら文字列をすべてmemonameの中にいれられますか?
回答: 現在も配列を`=`で代入することはできません。 しかし、配列を含む構造体は`=`で代入することができます。 ※K&Rの頃は使えませんでした、ANSIになってからできるようになった気がしますが、定かではありません。 以下の方法ははっきりいって配列をコピーするときの王道ではありません。 経験の浅い方、勉強中の方は標準ライブラリを使う方がよいです。 memcpyよりも速いのではないかと予想して性能比較したことがあります、有意な差はありませんでした。 memcpyは非常に速かったです。※今はどうなっているか調べていません。 配列は、要素数を統一するうまい方法がありません。 define定数を使うのが定番ですが強要できないのが難です。 ヘッダファイルに定義する方法もありますが、ヘッダファイルに実体を定義するのは抵抗があります。 構造体であれば配列の要素数を含めて宣言できますし、ヘッダファイルに書いて共有するのは抵抗ありません。 ### 【配列を`=`で代入する例】 この例では配列s2をs1に代入しています。 (注意)char以外の配列の場合、アラインメントが保証されないため危険です。 ``` #include int main(int argc, char *argv[]) { char s1[1024] = {0}; char s2[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; typedef struct { char s[1024]; } Txx; *((Txx *)s1) = *((Txx *)s2); //配列を=で代入する printf("s1 = [%s]\n", s1); printf("s2 = [%s]\n", s2); return 0; } ```