我對編程相對比較陌生,但在SO上一直是一個很長時間的潛伏者。當從字符串中讀取關鍵字時重構if語句
我目前在大學讀書,我在編寫一個基本上是非常基本的計算器的程序時遇到了一些麻煩,其中輸入和輸出以十六進制顯示給用戶。
大部分的代碼是很好去,但我想知道是否有一種方法來重構這個特定的代碼,所以它不(實質上)只是使用一大塊if語句來鏈接操作員用戶進入它的相應功能?
這是我所做的一些片段,以及我需要重構的內容。
就我個人而言,我覺得我應該嵌套或可能利用循環,但我沒有足夠的知識來確定知道!
感謝堆。
int main() {
printf ("Type in an expression: ");
scanf ("%x %s %x", &a, op, &b);
if (strcmp (op, "add") == 0)
{
add(a, b);
}
if (strcmp (op, "sub") == 0)
{
sub(a, b);
}
if (strcmp (op, "and") == 0)
{
band (a, b);
}
if (strcmp (op, "or") == 0)
{
bor (a, b);
}
/* ...... and so on .....*/
}
你可以有一個結構數組,它包含一個字符串和一個函數指針,然後遍歷它來查找匹配字符串,然後調用該函數。另一種方法是創建一個哈希表,可能有點沉重,因爲您的操作數量相當少。 –
另外,請注意'scanf'調用。你不檢查它的返回值,並且scanf中的''%s''是危險的 - 你的用戶可能會溢出你的緩衝區。 – PSkocik