質問編集履歴
1
無限ループの削除、char data[100]の0クリアを施しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -108,7 +108,7 @@
|
|
108
108
|
|
109
109
|
|
110
110
|
}else if (s==1){ /*ファイルからの入力*/
|
111
|
-
char data[100];
|
111
|
+
char data[100]={0}; /*訂正箇所:0クリア*/
|
112
112
|
int ch;
|
113
113
|
int q=1;
|
114
114
|
|
@@ -122,46 +122,46 @@
|
|
122
122
|
data[i]=fgetc(fp);
|
123
123
|
if (data[i]==EOF) break;
|
124
124
|
}
|
125
|
-
|
125
|
+
|
126
|
-
|
126
|
+
for (int i=0;data[i]!='\0';i++){
|
127
|
-
|
127
|
+
if (isdigit(data[i])){
|
128
|
-
|
128
|
+
push(data[i]);
|
129
|
-
|
129
|
+
}else{
|
130
|
-
|
130
|
+
switch (data[i]){
|
131
|
-
|
131
|
+
case '.':
|
132
|
-
|
132
|
+
pop();
|
133
|
-
|
133
|
+
break;
|
134
|
-
|
134
|
+
case '+':
|
135
|
-
|
135
|
+
b=pop();a=pop();
|
136
|
-
|
136
|
+
push(a+b);
|
137
|
-
|
137
|
+
break;
|
138
|
-
|
138
|
+
case '-':
|
139
|
-
|
139
|
+
b=pop();a=pop();
|
140
|
-
|
140
|
+
push(a-b);
|
141
|
-
|
141
|
+
break;
|
142
|
-
|
142
|
+
case '*':
|
143
|
-
|
143
|
+
b=pop();a=pop();
|
144
|
-
|
144
|
+
push(a*b);
|
145
|
-
|
145
|
+
break;
|
146
|
-
|
146
|
+
case '/':
|
147
|
-
|
147
|
+
b=pop();a=pop();
|
148
|
-
|
148
|
+
push(a/b);
|
149
|
-
|
149
|
+
break;
|
150
|
-
|
150
|
+
case ' ':
|
151
|
-
|
151
|
+
break;
|
152
|
-
|
152
|
+
case '\n':
|
153
|
-
|
153
|
+
if(n!=0)
|
154
|
-
|
154
|
+
printf("答えは%ldです。",pop());
|
155
|
-
|
155
|
+
n=0;
|
156
|
-
|
156
|
+
break;
|
157
157
|
|
158
|
-
|
158
|
+
default:
|
159
|
-
|
159
|
+
push(data[i]);
|
160
|
-
|
160
|
+
break;
|
161
161
|
}
|
162
162
|
}
|
163
163
|
|
164
|
-
|
164
|
+
|
165
165
|
}
|
166
166
|
fclose(fp);
|
167
167
|
}
|