C言語なら、俺に聞け! <19>
■ このスレッドは過去ログ倉庫に格納されています
0428scanf推進派
NGNG>根本的解決にはなっていませんが・・・
もしかして2バイト文字も一文字としてずらすからでしょうか?
文字コードレベルでずらしていいのでしたら
#include "stdio.h"
#include "stdlib.h"
#define uchar unsigned char
#define num 8
/* ↓MS系コンパイラは定義されていないので↓ */
#define iskanji(_c) ((0x81<=((uchar)_c)&&((uchar)_c)<=0x9f)||(0xe0<=((uchar)_c)&&((uchar)_c)<=0xfc))
int main(void)
{
int i, n;
uchar string[(num*2)+1] = {0x00};
printf( " 1 〜 %d 文字入力してください。\n", num );
scanf("%s", string);
for(i=0, n=0; *(string+i)!=0x00; i++, n++){
if(iskanji(*(string+i)))
i++;
}
if(n > num){
puts( "多すぎ..." );
exit(30);
}
for (i=0; *(string+i)!=0x00; i++){
if(iskanji(*(string+i)))
i++;
*(string+i) += 0x01;
}
printf( "%s\n", string );
return (0);
}
は、どうでしょうか?コンパイルしてないのでうまく動作するかはわかりませんが...
また、質問の内容とずれていたらスマソ
■ このスレッドは過去ログ倉庫に格納されています