C言語:構造体を用いたstackの実現
構造体を用いてstackを作成しているのですが、main関数内での取り扱いが分かりません。
errorが示しているのは「該当のソースコード」で「//」がついた行です。
発生している問題・エラーメッセージ
error: 'buf' undeclared (first use in this function) while(fgets(buf,sizeof(buf),stdin) != NULL) { ^ note: each undeclared identifier is reported only once for each function it appears in error: invalid type argument of '->' (have 'struct stack') if(s -> contents[128] != 0){ ^ error: invalid type argument of '->' (have 'struct stack') for(t = 0; t < (s -> top); t++){ ^ error: subscripted value is neither array nor pointer nor vector printf("[%d]", s[t]);
該当のソースコード
C
1typedef char elementtype; 2struct stack{ 3 int top; 4 elementtype contents[MAXSTACK]; 5}; 6 7int main(){ 8 struct stack s; 9 int i; 10 int t; 11 initstack(&s); 12 **while(fgets(buf,sizeof(buf),stdin) != NULL) {** //bufの定義を 13 if(buf[0]=='p'){ 14 if(stackempty(&s) == 1){ 15 printf("Underflow\n"); 16 exit(1); 17 }else{ 18 pop(&s); 19 } 20 }else{ 21 if(s -> contents[128] != 0){ //スタックが埋まっているならば 22 printf("Overflow\n"); 23 exit(1); 24 }else{ 25 sscanf(buf,"%d", &i); 26 push(&s, i); 27 } 28 } 29 for(**t = 0; t < (s -> top); t++**){ //スタック配列内を0からtopまで 30 **printf("%d,", s[t])**; //main関数内での配列の扱い 31 } 32 } 33 return 0; 34}
補足
pop等、各関数内では
elementtype pop(struct stack *p){
p -> contents[p -> top] = 0;
p -> top--;
}
のように作成できたのですが、main内での配列の扱い方が理解できていません。
また、各errorの内容の理解はできるですが、具体的にどうすればよいかが分かりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/10 08:22