2012-06-15 32 views

答えて

19

このように初期化できないため、初期化値として定数式が必要です。

#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); 
    : 
} 

をまたは:と交換してください。

2

char[]の初期化子は、リテラル文字列または{1,2,3,4}のようなものである必要があります。別の変数の名前にすることはできません。

7

配列は割り当てられません。

あなただけの定数式がtestStrのあなたの初期のように、配列を初期化するために使用することができrevS

memcpy(revS,testStr,50); 
4

testStrから内容をコピーするのmemcpyを使用する必要があります。

revSを別の配列変数ではなく、という定数式で初期化しようとしています。最初の文字列の内容を2番目の文字列にコピーする場合は、strcpyを使用する必要があります。

1

あなたがcharchar *を割り当てることはできませんので、間違っている

char revS[50] = testStr; 

を行っています。

試してみてください。revS = testStr;試してみてください。

0

あなたはまた、ポインタを使用することができます二番目の配列を操作することを計画していない限り:

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); 
} 
関連する問題