次のような文字列があります。
char myString[] = "Amazing String";
次のように、文字列をループして文字を出力したいと思います。
int i = 0;
for (i = 0;i < sizeof(myString);i++){
printf("%s\n", myString[i]);
}
しかし、何らかの理由で、文字自体ではなく整数値を取得します。
これが完全にばかげた質問である場合は申し訳ありませんが、何が間違っているのかわかりません。
次のような文字列があります。
char myString[] = "Amazing String";
次のように、文字列をループして文字を出力したいと思います。
int i = 0;
for (i = 0;i < sizeof(myString);i++){
printf("%s\n", myString[i]);
}
しかし、何らかの理由で、文字自体ではなく整数値を取得します。
これが完全にばかげた質問である場合は申し訳ありませんが、何が間違っているのかわかりません。
文字列の長さの代わりに使用strlen()し、文字を出力したい ( %c):
int i = 0;
for (i = 0;i < strlen(myString);i++){ // to get a string's length, use strlen
printf("%c\n", myString[i]); // to print a single character, use %c
}
strlen()over をsizeof()使用する理由 まあ、この特定の例では、違いはありません。ただしstrlen()、文字列内の印刷可能な文字数を提供するためsizeofのものですが、配列のサイズを返します (印刷可能な文字 + null ターミネータの場合は 1)。
int len1 = sizeof(myString); // 15
int len2 = strlen(myString); // 14
A) 表示されないので役に立たない
B) 文字列を使用する習慣を身につけsizeofたら、配列を渡す関数内で使用することができます (この場合、配列はポインターに減衰します) ) するとchar *、文字数ではなくa のサイズが返されます。行った場合、同じ関数内で同じことが適用されますchar *myString = "Amazing String";
単一の文字"%s"に使用する必要があるときに、文字列の記号を使用しています。"%c"
printf("%c\n", myString[i]);
// ^^
int i = 0;
for (i = 0;i < sizeof(myString);i++){
printf("%c\n", myString[i]);
}
%s の代わりに %c と sizeof() は適切な選択ではありません。試すstrlen(myString)