teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

無限ループの削除、char data[100]の0クリアを施しました。

2020/06/05 17:53

投稿

VanS
VanS

スコア7

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
- while (q){
125
+
126
- for (int i=0;data[i]!='\0';i++){
126
+ for (int i=0;data[i]!='\0';i++){
127
- if (isdigit(data[i])){
127
+ if (isdigit(data[i])){
128
- push(data[i]);
128
+ push(data[i]);
129
- }else{
129
+ }else{
130
- switch (data[i]){
130
+ switch (data[i]){
131
- case '.':
131
+ case '.':
132
- pop();
132
+ pop();
133
- break;
133
+ break;
134
- case '+':
134
+ case '+':
135
- b=pop();a=pop();
135
+ b=pop();a=pop();
136
- push(a+b);
136
+ push(a+b);
137
- break;
137
+ break;
138
- case '-':
138
+ case '-':
139
- b=pop();a=pop();
139
+ b=pop();a=pop();
140
- push(a-b);
140
+ push(a-b);
141
- break;
141
+ break;
142
- case '*':
142
+ case '*':
143
- b=pop();a=pop();
143
+ b=pop();a=pop();
144
- push(a*b);
144
+ push(a*b);
145
- break;
145
+ break;
146
- case '/':
146
+ case '/':
147
- b=pop();a=pop();
147
+ b=pop();a=pop();
148
- push(a/b);
148
+ push(a/b);
149
- break;
149
+ break;
150
- case ' ':
150
+ case ' ':
151
- break;
151
+ break;
152
- case '\n':
152
+ case '\n':
153
- if(n!=0)
153
+ if(n!=0)
154
- printf("答えは%ldです。",pop());
154
+ printf("答えは%ldです。",pop());
155
- n=0;
155
+ n=0;
156
- break;
156
+ break;
157
157
 
158
- default:
158
+ default:
159
- push(data[i]);
159
+ push(data[i]);
160
- break;
160
+ break;
161
161
  }
162
162
  }
163
163
 
164
- }
164
+
165
165
  }
166
166
  fclose(fp);
167
167
  }