空白文字について
C言語の初心者です。
今、VC 6.0の環境で電卓を作っています。
エディットボックスに数値を入力して計算させるプログラムなのですが
エディットボックスにスペースを入力されても計算出来るようにしたいのですが解りません。
NULL文字をチェックすればよいのか、それとも「isspece」の関数を使って空白文字を調べればよいか解りません。プラス「+」、マイナス「-」の符合が入力されても計算出来るようには行えたのですが、どうしても空白(スペース)を入力された場合が、うまくいきません。
作成途中のソースコードです。ご指導お願いします。
// OnButton1() /////////////////////////////////////////////////////////////////////
void CKasanDlg::OnButton1()
{
adding();
char num1[128],num3[128];
int i,length=strlen(&num1[0]);
int numk,numl=0;
m_num3.GetLine( 0, num3 );
numk = sscanf( num3, "%d", &numl );
for( i=0; i<length; i++ ){
isdigit( (int) num1[i] );
}
if(( numk == -1 )){
MessageBox("数値を入力してください。"); // メッセージボックス
}
}
// 足算 (num) /////////////////////////////////////////////////////////////////
void CKasanDlg::adding()
{
char num1[128],num2[128];
int number1=0, number2=0,sum=0;
CString ans;
int nums,numa;
int i=0, m=0, add1=0,add2=0;
m_num3.SetSel( 0,-1 );
m_num3.Clear();
m_num1.GetLine( 0, num1 );
int length1 ;
if(( num1[ 0 ] == '-' ) || ( num1[ 0 ] == '+' )){
length1 = strlen ( &num1[1] );
for( i=0; i<length1; i++ ){
add1 = isdigit( (int)num1[i+1] );
if( add1 == 0 ){
MessageBox("10進数字以外の値が入力されています。\n(足算・左側)");
break;
}
}
}
else{
length1 = strlen ( &num1[0] );
for( i=0; i<length1; i++ ){
add1 = isdigit( (int)num1[i] );
if( add1 == 0 ){
MessageBox("10進数字以外の値が入力されています。\n(足算・左側)");
break;
}
}
}
m_num2.GetLine( 0, num2 );
int length2;
if(( num2[ 0 ] == '-' ) || ( num2[ 0 ] == '+' ) || ( num2[ 0 ] == ' ' )){
length2 = strlen ( &num2[1] );
for( m=0; m<length2; m++ ){
add2 = isdigit( (int)num2[m+1] );
if( add2 == 0 ){
MessageBox("10進数字以外の値が入力されています。\n(足算・右側)");
break;
}
}
}
else{
length2 = strlen (&num2[0]);
for( m=0; m<length2; m++ ){
add2= isdigit((int)num2[m]);
if( add2 == 0 ){
MessageBox("10進数字以外の値が入力されています。\n(足算・右側)");
break;
}
}
}
if((add1 == 0 ) && ( add2 == 0)){
return ;
}
if((add1 == 0 ) && ( add2 != 0)){
return ;
}
if((add1 != 0 ) && ( add2 == 0)){
return ;
}
nums = sscanf( num1, "%d", &number1 );
numa = sscanf( num2, "%d", &number2 );
if(( nums == 1) && ( numa == 1)){
sum = number1 + number2;
ans.Format( "%d",sum );
m_num3.SetSel( 0, -1 );
m_num3.Clear();
m_num3.ReplaceSel( ans );
}
}
///////////////////////////////////////////////////////////////////////////////
お礼
返事が遅くなりすみませんでした。 umu = umu * 2 と同じ結果を得ます。 簡素化することで、処理速度向上なるのですね^^ 納得です。 今後ともよろしくお願いいたします。 ありがとうございました。