文字列の反転
Posted feedbacks - C
see: 文字コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <stdio.h>
#include <string.h>
int main()
{
int i, j, len;
unsigned char in[BUFSIZ];
unsigned char out[BUFSIZ];
scanf("%s", in);
len = strlen(in);
j = len - 1;
i = 0;
while (i < len) {
/* Shift-JISか判定 */
if ((in[i] >= 0x80 && in[i] <= 0x9F) ||
(in[i] >= 0xE0 && in[i] <= 0xFF)) {
out[j-1] = in[i++];
out[j] = in[i++];
j--;
}
else {
out[j] = in[i++];
}
j--;
}
out[len] = '\0';
printf("%s\n", out);
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <string.h>
void swap(char *str, int i, int j)
{
char tmp = str[i];
str[i] = str[j];
str[j] = tmp;
}
char *reverse_string(char *str)
{
int len, i, j;
len = strlen(str);
for (i = 0, j = len-1; j > i; ++i, --j) {
swap(str, i, j);
}
for (i = len-1; i > 0; --i) {
if (str[i] & 0x80) {
swap(str, i, i-1);
--i;
}
}
return str;
}
|


にしお
#3414()
Rating0/2=0.00
サンプル入出力
>>> print reverse_string("Hello") olleH >>> print reverse_string("こんにちは") はちにんこ >>> print reverse_string("濁点(だくてん)") )んてくだ(点濁[ reply ]