シンボルテーブルを作成していて、(symbol_table symtab、char sym)の引数を持つget_symbolを書くのに苦労しています。get_symbolとset_symbolの2つの関数のコードを作成する必要がありますが、シンボルテーブルとは何か、およびこれら2つの関数を書き出す方法を理解するのに問題があります。get_symbol()には2つの引数があります。シンボルテーブルと、値を取得する必要のあるシンボル名です。シンボル名がA、B、Cのいずれかである場合、シンボルテーブルの対応する値が返されます。それらの名前の1つでない場合は、0が返されます。誰かが助けてくれるなら、それはあなたの時間に大いに感謝するでしょう。
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