#include#include int main(){ char c[128],c1[128],op; int x=0, y=0, z=0,i=0, j; printf("計算式:\n"); gets(c); for(j=0; c[i]>='0' && c[i]<='9'; i++){ c1[j]=c[i]; j++; } c1[j] = '\0'; x=atoi(c1); // \0はNULL op = c[i]; i++; for(j=0; c[i]>='0' && c[i]<='9'; i++){ // iは第1項とoperandの次の配列から c1[j]=c[i]; j++; } c1[j] = '\0'; y=atoi(c1); switch(op){ case '+': z=x+y; break; case '-': z=x-y; break; case '*': z=x*y; break; case '/': z=x/y; break; case '%': z=x%y; break; default: printf("\a"); } printf("answer: %d\n", z); return 0; }
$ ./main
計算式:
22+3
answer: 25
forループを二回回しているが、2回目のiは第1項とoperandの次の配列からのiとなる
一見あれ?っと思った。