全角文字と半角文字を判別して文字列を追加
全角文字と半角文字が混合している文字列に文字を追加するプログラムを考えています。
仕様としては全角から半角に変わる際には全角文字の後ろに1234を、
半角から全角に変わるときは半角文字の後ろに4321をつけるというものです。
例1 文字列が「あxxxお」ならば出力結果は「あ1234xxx4321お」
そこで質問なのですが
文字列から全角文字と半角文字をプログラム上で判別して
上記のように出力するにはどうしたらいいんでしょうか?
ヒント等ございましたらどうぞお願いします。
とりあえず作ってみた例1の結果を無理やり出力するプログラムのコードを載せておきます。
こちらをうまく改変してくださっても結構ですのでよろしくお願いいたします。
#include <stdio.h>
#include <string.h>
int main(void){
unsigned char str0[256] = "あxxxお", str1[256] = "1234",str2[256]= "4321";
unsigned int zh,hz, len0 = strlen(str0),len1=strlen(str1),len2=strlen(str2);
printf("挿入前:%s\n",&str0);
zh=2; //全角から半角に変わる位置
hz=5; //半角から全角に変わる位置
//1234を挿入///
memmove(&str0[zh+len1], &str0[zh], len0 - zh+1);
memcpy(&str0[zh], str1, len1);
//4321を挿入///
memmove(&str0[hz+len1+len2], &str0[hz+len1], len0);
memcpy(&str0[hz+len1], str2, len2);
printf("挿入後:%s\n",&str0);
return 0;
}
補足
一番目と二番目で パターンが違うということですね。 そうすると どちらか 判定しないと いけなくなりますが、それが ポイントですね。