😸
[C] strrev 関数
機能
文字列を逆順に並べ替える。返り値は逆順になった元のポインタ。[1]
使用例
abcde
を逆順表示する
\n
は改行を表す エスケープシーケンス[2]
コード
char str[] = "abcde";
strrev(str);
printf("%s\n", str);
全文
#include <stdio.h>
#include <string.h>
// 非標準なので自前で実装例
char* strrev(char* str) {
char *p1, *p2;
if (!str) return NULL;
for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2) {
char tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
return str;
}
void main() {
char str[] = "abcde";
strrev(str);
printf("%s\n", str);
}
実行結果
edcba
Hello, world!
を逆順表示する
変数に格納した コード
char msg[] = "Hello, world!";
strrev(msg);
printf("%s\n", msg);
全文
#include <stdio.h>
#include <string.h>
char* strrev(char* str) {
char *p1, *p2;
if (!str) return NULL;
for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2) {
char tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
return str;
}
void main() {
char msg[] = "Hello, world!";
strrev(msg);
printf("%s\n", msg);
}
実行結果
!dlrow ,olleH
Discussion