int main(void) {
char testStr[50] = "Hello, world!";
char revS[50] = testStr;
}
エラー:「無効な初期化子」がrevS
の行に表示されます。私は間違って何をしていますか?"Invalid Initializer"が表示されていますが、何が間違っていますか?
int main(void) {
char testStr[50] = "Hello, world!";
char revS[50] = testStr;
}
エラー:「無効な初期化子」がrevS
の行に表示されます。私は間違って何をしていますか?"Invalid Initializer"が表示されていますが、何が間違っていますか?
このように初期化できないため、初期化値として定数式が必要です。
#define HWSTR "Hello, world!"
int main (void) {
char testStr[50] = HWSTR;
char revS[50] = HWSTR;
:
}
これはあなたのソース内の最小限の重複を持つ定数式を提供します。あなたは本当に初期化をしたい場合、あなたはのようなものを使用することができ、
int main (void) {
char testStr[50] = "Hello, world!";
char revS[50]; strcpy (revS, testStr);
:
}
をまたは:と交換してください。
char[]
の初期化子は、リテラル文字列または{1,2,3,4}
のようなものである必要があります。別の変数の名前にすることはできません。
配列は割り当てられません。
あなただけの定数式がtestStr
のあなたの初期のように、配列を初期化するために使用することができrevS
memcpy(revS,testStr,50);
にtestStr
から内容をコピーするのmemcpyを使用する必要があります。
revS
を別の配列変数ではなく、という定数式で初期化しようとしています。最初の文字列の内容を2番目の文字列にコピーする場合は、strcpy
を使用する必要があります。
あなたがchar
にchar *
を割り当てることはできませんので、間違っている
char revS[50] = testStr;
を行っています。
試してみてください。revS = testStr;
試してみてください。
あなたはまた、ポインタを使用することができます二番目の配列を操作することを計画していない限り:
int main(void){
char textStr[50] = "hello worlds!";
char *revS = textStr;
printf("%s\n", revS);
}
あなたが本当にクレイジー取得したい場合は、あなたがして、配列内の特定の場所を指し示すことができます参照演算子:
int main(void){
char textStr[50] = "hello worlds!";
char *revS = &textStr[5];
printf("%s\n", revS);
}