コードのコンパイルを停止する単純な 1 行、何が問題なのですか?
char *words[256] = new char[numOfWords][256];
array must be initialized with a brace-enclosed initializer
への 256 個のポインターの配列を宣言しましたchar
。エラー メッセージは明確です。配列は、中かっこで囲まれた初期化子で初期化する必要があります。したがって、宣言を保持したい場合は、次のようにします。
char* words[256] = { new char[wordlength], ... };
// ^^^ this is effectively your numOfWords
または、初期化を完全に省略して、個々の要素を後でループなどで割り当てることもできます。要素を動的に割り当てる場合は、それらを適切に削除する責任もあることに注意してください。
256 個の配列の配列へのポインターが必要な場合はchar
、次のようにします。
char (*words)[256] = new char[numOfWords][256];
2D 配列を宣言するときは、それを単に他の配列へのポインターの配列と考えてください。したがって、あなたが求めていることを行うには:
char *words[] = new char*[256];
for (int i = 0; i < 256; ++i) {
words[i] = new char[numOfWords];
}