|
>1バイトスペースと
>2バイトスペースを取り除きたいのですが
>どのような処理をすればよろしいでしょうか?
2バイト文字はASCII文字以外から始まりますからそこで処理を分けます。
#include <stdio.h>
#include <ctype.h>
void despace(char const *str, char *dest)
{
int i = 0, j = 0;
do {
if (isascii(str[i])) { /* または ((str[i]) & ~0x7f) == 0) */
if (str[i] != ' ') {
dest[j] = str[i];
j++;
}
i++;
} else {
if (!(str[i] == " "[0] && str[i+1] == " "[1])) {
dest[j] = str[i];
dest[j+1] = str[i+1];
j += 2;
}
i += 2;
}
} while (dest[j-1] != '\0');
}
int main(void)
{
char str[] = "ho◆、¥ ge piy oo=@oo\to";
int i;
printf("%s\n", str);
despace(str, str);
printf("%s\n", str);
}
|