今回は、「配列に格納されている文字列の文字の並びを反転するプログラム」である。
なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.89.1)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0でコンパイルしている。
配列に格納されている文字列の文字の並びを反転するプログラム
//配列に格納されている文字列の文字の並びを反転するプログラム
#include <stdio.h>
#define LEN 128
//文字列sの長さを返す
int str_length(const char s[])
{
int len = 0;
while(s[len])
len++;
return len;
}
//文字列sの文字の並びを反転する
void rev_string(char s[])
{
int len =str_length(s);
for (int i = 0; i < len/2; i++)
{
char temp = s[i];
s[i] = s[len-i-1];
s[len-i-1] = temp;
}
}
//文字列の配列の文字の並びを反転する
void rev_strings(char s[][LEN],int n)
{
for (int i = 0; i < n; i++)
rev_string(s[i]);
}
//文字列の配列を表示
void put_strary(const char s[][LEN],int n)
{
for (int i = 0; i < n; i++)
printf("s[%d] = \"%s\"\n",i,s[i]);
}
int main(void)
{
char cs[][LEN]= {"SMALL","ABC","12345"};
rev_strings(cs,3);
put_strary(cs,3);
return 0;
}
実行結果
s[0] = "LLAMS"
s[1] = "CBA"
s[2] = "54321"
関数rev_stringsは、n個の文字列の文字の並びを反転する関数である。
個々の文字列の反転を関数rev_stringに委ねている。
関数put_straryは、n個の文字列の並びを表示する関数である。
なお、関数rev_stringsと関数put_straryが受け取れるのはn行LEN列の2次元配列に限られる。
(参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著)、 由梨かおる(著)SBクリエイティブ
コメント