演習9ー12
問: 受け取った文字列の配列に格納されているn個の文字列の文字の並びを反転する関数を作成せよ。たとえば、sに{“SEC, “ABC”}を受け取ったら、その配列を{“CES”, “CBA”}に更新すること。
void rev_strings(char s[][N128], int n)
// Ex0912.c
#include <stdio.h>
#define NO1 5
#define NO2 128
void rev_strings(char s[][NO2], int n)
{
int len = 0;
int j = 0;
char tmp[j][NO2];
for (n; n >= 1; n--) {
while (s[j][len]) {
len++;
}
int i = 0;
for (int i = 0; i < (len / 2); i++) {
tmp[j][i] = s[j][i];
s[j][i] = s[j][(len - 1) - i];
s[j][(len - 1) - i] = tmp[j][i];
}
while (len) {
putchar(s[j][i++]);
len--;
}
putchar('\n');
j++;
}
}
int main(void)
{
int i;
int n = 0;
char s[NO1][NO2] = { 0 };
for (i = 0; i < NO1; i++) {
printf("s[%d] : ", i);
scanf("%s", s[i]);
n++;
if (s[i][0] == '$' && s[i][1] == '$' && s[i][2] == '$' && s[i][3] == '$' && s[i][4] == '$') {
i = NO2;
}
}
rev_strings(s, n);
return 0;
}
コメント
特になし。
書籍情報
コメント