シンボルテーブルを作成して、get_symbolを書くのが苦労しています。これには、(symbol_table symtab、char sym)という引数があります。私は2つの関数get_symbolとset_symbolのコードを書かなければなりません。シンボルテーブルの内容とこれら2つの関数の書き方を理解する上で問題があります。 get_symbol()には2つの引数があります:シンボルテーブルと値を取得するシンボル名です。シンボル名がA、B、Cのいずれかである場合、シンボルテーブルの対応する値が返されます。それらの名前の1つではない場合は、0が返されます。もしあなたのお時間を頂きまして、ありがとうございました。Cのget_symbol関数
symbol_table.cコード:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "globals.h"
#include "symbol_table.h"
typedef struct symbol_table_s {
int a,b,c;
}*symbol_table_rep;
status init_symbol_table (symbol_table *p_symtab)
{
symbol_table_rep st = malloc(sizeof(struct symbol_table_s));
if (st == NULL)
return ERROR;
st->a = st->b = st->c = 0;
*p_symtab = (symbol_table) st;
return OK;
}
void destroy_symbol_table (symbol_table *p_symtab)
{
free(*p_symtab);
*p_symtab = NULL;
}
void set_symbol(symbol_table *p_symtab, char sym, int value)
{
/* WRITE CODE FOR THIS */
}
int get_symbol (symbol_table symtab, char sym)
{
/* WRITE CODE FOR THIS FUNCTION */
symbol_table_rep symtab;
if (A,B,C)
{
return symbol_table;
}else{
return 0;
}
}
symbol_table.h Code:
#ifndef _SYMBOL_TABLE_H
#define _SYMBOL_TABLE_H
#include "globals.h"
ABSTRACT_TYPE(symbol_table);
status init_symbol_table (symbol_table *p_symtab);
void destroy_symbol_table(symbol_table *p_symtab);
void set_symbol (symbol_table *p_symtab, char sym, int value);
int get_symbol (symbol_table symtab, char sym);
#endif
私はあなたの質問からあなたが達成しようとしていることを理解しましたが、私は*正確に*あなたが苦労していることを理解できませんでした。どの部分が正確にあなたに助けを求めていますか?明示的にそれを指摘すれば、より良い答えを得るのに役立つでしょう。 – amit
@amit imは2つの関数を書き出しようとしていて、どこから開始するのか分からない。 – Cka91405
文if(A、B、C)の目的は何ですか?法的には、あなたは変数のどれも宣言しておらず、 'C'だけが実際にブール式として使われます。 –