空白文字について
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 );
}
}
///////////////////////////////////////////////////////////////////////////////
お礼
回答ありがとうございました。 わたしは、ExcelVBA初心者ですが、元々ExcelVBAで作ったものをVBでと思い、作っています。 VB自体は初めてなのでまだまだ知らない事が多すぎるようです。 現在の作り方では9割程度完成しており、実際には線が数百本となることはまず無い(多くても2百本 くらいかな?)のでこのまま進めてみようと思います。 完成後、shitabaさんに教えて頂いた、System.DrawingやWPF(正直言いますと何のことだかよく 分かっていませんが)を勉強して、出来れば改良したいと思います。 この先もっと複雑なものも作ってみたいと思っています(自分の技量では恐らく出来ないレベルのもの ですが...)ので、それにはもっと色々と勉強する必要があります。