数値変換??
入力された文字列を判断して、それぞれの対応をさせるものを作りたいのですが、
下記のようにしたとき、どうしてもうまくいかないところがあります。
1)例えば、[W,B,C,1,2,3]と連続して入力したら、ID2で[123]と10進数に変換したいのに、
[3,0,0]以降になると、16進数で表した時は(300=12C)になるはずなのに(300=2C)で変換されてしまう。0~299までは正常に変換される。
2)下記「←」の部分で、ID[0~2]の中身がすべて数字であるときにatoiを実行したいけど、
isalphaでは一文字しか判定されないので、他に方法はあるのかどうか…配列全部を判定あできるやり方はあるのでしょうか?
どなたかわかる方がいらっしゃいましたら、ヒントなり頂けないでしょうか?お願いします。
void main(){
uchar a,c,i,j,COM[7],ID[3];
ulong ID2=0;
for(a=0;a<7;a++){
c=getc();
COM[a]=c;
if(c=='\r')
break;
printf("%c",c);
}printf("\r\n");
if(COM_RW[0]=='R'){
printf("RR");
}else if(COM_RW[0]=='W'){
if(isdigit(COM[3])){
for(i=0,j=3;j<6;j++,i++)
ID[i]=COM_RW[j];
if(isdigit(ID[2])) <----
ID2=atoi(ID);
}
}else if(COM_RW[0]!='\r'){
printf("ERROR.2:once more input.");
}
printf("%lu",ID2);
ID2=0;
printf("\r\n");
}