下記のように(色々端折ってはありますが)した時、例として一文字ずつ「A,A,A,1,2,3」と入力したら、「1,2,3」は文字として扱われていると思っています。しかし「AAA」と「123」という風に数値として表わしたくて、[>>]の部分で変換できるようにしてみたのですが…
[x,x,x,9,9,9]と入力→[xxx231]と出力
[x,x,x,3,3,6]と入力→[xxx80]と出力
[x,x,x,4,0,0]と入力→[xxx144]と出力
という風に、全く関係のない数値として出てきてしまいます。
どうしたらいいのかわからなくなってしまったので、どなたかヒントを頂けないでしょうか。お願いします。
while(1){
____uchar a,c,COM_RW[7],IDall[3];
____ulong ID2=0;
____for(a=0;a<7;a++){
________c=getc();
________printf("%c",c);
____}
____switch(COM_RW[0]){
________case 'W': //WRITE Command
____________if(COM_RW[2]=='I'){
____________COM_RW[6]='\0';
____________if(isxdigit(COM_RW[3])){
________________for(i=0,j=3;j<6;j++,i++)
____________________IDall[i]=COM_RW[j];
________>>______if(!isdigit(IDall[2])){
________>>__________ID2=(IDall[0]-'0')*10;
________>>__________ID2+=IDall[1]-'0';
________>>______}else{
________>>__________ID2=(IDall[0]-'0')*100;
________>>__________ID2+=(IDall[1]-'0')*10;
________>>__________ID2+=IDall[2]-'0';
________________}
__以下略。
お礼
コードを試して頂いていたんですね!! ほぼこのままで動く、ということがわかっただけでもありがたいです。 コンパイラの違いなのかなんなのか… もう一度関数(getc()等)を見直してみます。前はこれで動いたんですけどね… わざわざありがとうございます!