どうにも動かないプログラム
H8/3069のLANのキットが秋月で売っていてそれを組み立てていくつかサンプルプログラムを書いて動かしたのですが,下に書いたプログラムがどうにも上手くいかない.
void calc(char *s){ int a,b; sscanf(s,"%d",&a); while(++s){ if(s == NULL) break; else{ switch(*s){ case '+': sscanf(++s,"%d",&b); printf("%d + %d = %d\n",a,b,a+b); break; default: break; } } } return; } int main(void){ char s[] = "1+2"; calc(s); return 0; }
いろいろは省略するけどこんな感じ.
何かまずいかと言うとcalc関数の最初のsscanfで引数の文字から整数を読み込むのだが,何を入れても必ずa が -1 になってしまう罠.
swtich文の中で行っているsscanfは問題なく行われているから,ライブラリのバグだとは考えにくい.
一応PC上で動かしてソースレベルで問題は無いことを確認しているのだが,弱った・・・