|
全角半角、英数漢字、これらを同順表示した後逆順表示するプログラムを作成したいのですが、全角数字を処理した場合化けてしまいます。
(例:123春あいう123ABCabc → cbaCBA321ういあ春321)
プログラムを見てください。
----------------------------------------------------------
#include <stdio.h>
#include <ctype.h>
void shori( int i, char str[100] )
{
//同順処理
for( i=0; str[i] != '\0'; i++){
if( isalnum( str[i] ) != 0 ){
printf( "%c", str[i] );
}else{
printf( "%c%c", str[i], str[i+1] );
i++;
}
}
printf( "\n" );
//逆順処理
for(i-=1; i>=0; i--){
if( isalnum( str[i] ) != 0 ){
if(isalnum(str[i])!=0&&isalnum(str[i]==0)){
printf("%c%c",str[i-1],str[i]);
if(i==0){
printf("%c",str[i]);
break;
}
}
printf( "%c", str[i] );
}else{
printf( "%c%c", str[i-1], str[i] );
i--;
}
}
}
main(void)
{
int i=0;
char str[100];
printf( "input => " );
scanf( "%s", str );
shori( i, str );
return 0;
}
----------------------------------------------------------
|