どうも、ちょげ(@chogetarou)です。
文字列(string)をfor文でループする方法を紹介します。
方法

文字列(string)をfor文でループする方法は、2つあります。
文字数
ひとつは、文字数を使う方法です。
まず、for文のループ変数を「0」で初期化します。
ループ条件に、「ループ変数がstrlen()未満」を指定します。
strlen()の引数に、対象の文字列を指定します。
また、ループ後の処理で、ループ変数を「+1」します。
そして、{}内にfor文のループ処理を指定します。
ループ処理では、ループ変数で文字列のインデックスを取得します。
//text=対象の文字列
for (int i = 0; i < strlen(text); ++i) {
//ループ処理
//ループ変数(i)で文字列のインデックスを取得
//文字は「text[i]」で取得
}
上記のforループは、文字列を1文字ずつループします。
使用例
#include <stdio.h>
#include <string.h>
int main(void){
char *text = "Hello,World.";
for (int i = 0; i < strlen(text); ++i)
{
printf("%c", text[i]);
}
return 0;
}
出力:
Hello,World.
ポインタ
もうひとつは、ポインタを使う方法です。
まず、対象の文字列のアドレスで初期化したポインタを用意します。
次に、for文のループ変数を用意したポインタで初期化します。
ループ条件に、「ループ変数が「’\0’」以外」を指定します。
また、ループ後の処理で、用意したポインタを「+1」し、その結果をループ変数に代入します。
そして、{}内にfor文のループ処理を指定します。
ループ処理では、ループ変数で文字列の文字を取得できます。
//text=対象の文字列
char *p = text;
for (char c = *p; c != '\0'; c = *++p)
{
//ループ処理
//ループ変数(c)で文字列の文字を取得
}
上記のforループは、文字列を1文字ずつループします。
使用例
#include <stdio.h>
#include <string.h>
int main(void){
char *text = "Hello,World.";
char *p = text;
for (char c = *p; c != '\0'; c = *++p)
{
printf("%c", c);
}
return 0;
}
出力:
Hello,World.
まとめ
文字列(string)をfor文でループする方法は、次の2つです。
- 文字数を使う方法
for (int i = 0; i < strlen(text); ++i) { /*ループ処理。ループ変数(i)でインデックスを取得*/ }
- ポインタを使う方法
char *p = text;
for (char c = *p; c != '\0'; c = *++p) { /*ループ処理。ループ変数(c)で文字を取得*/ }
コメント