AOJの0087の逆ポーランド法の計算機を作るプログラムを解いていたのですが
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char c[99],d[80];
double s[80];
int n,p,q,t;
while(gets(c))
{
if(c[0] == 0)
break;
for(n=0,p=-1,q=0;c[n];n++)
{
switch(c[n])
{
case '+':
t=s[p-1]+s[p];
s[--p]=t;
break;
case '*':
t=s[p-1]*s[p];
s[--p]=t;
break;
case '/':
t=s[p-1]/s[p];
s[--p]=t;
break;
case ' ':
if(q!=0)
{
s[++p]=atof(d);
memset(d,NULL,80);
q=0;
}
break;
case '-':
if(c[n+1]==' '||c[n+1]=='\0')
{
t=s[p-1]-s[p];
s[--p]=t;
break;
}
default:
d[q++]=c[n];
}
}
if(q!=0)
s[0]=atof(d);
printf("%f\n",s[0]);
}
return 0;
}
どこがおかしいか見当が付きません。
ご指摘お願いいたします。