计算器在其操作选择中带有输入字符串

时间:2017-10-30 10:48:39

标签: c string calculator

如何在操作选择中使用输入字符串制作计算器?我已经尝试过但它不起作用。我的演讲分配:)

printf("choose:");
scanf("%s", (char *) &choose);

switch(choose)
{
case 'tambah':
printf("Masukkan Nilai 1:");
scanf("%d", &x);
printf("Masukkan Nilai 2:");
scanf("%d", &y);
hasil = tambah(x,y);
printf("%d + %d = %d", x, y, hasil);
break;

case 'kurang':
printf("Masukkan Nilai 1:");
scanf("%d", &x);
printf("Masukkan Nilai 2:");
scanf("%d", &y);
hasil = kurang(x,y);
printf("%d - %d = %d", x, y, hasil);
break;

1 个答案:

答案 0 :(得分:1)

使用字符串(考虑到你在你的例子中使用字符串,你只需将几个字符放入文字,这应该是char)直接在C语句中的switch()语句是一个可怕的想法。我建议您选择可能的选项并将其提供给strcmp,以便相应地匹配您的操作和分支。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

enum {
tambah = 0,
kurang = 1
};

int decodeLineType(const char* strAction)
{
  int i = 0;

  char acAllowedCodes[2][7] = {"tambah","kurang"};

  for(; i < 2; ++i)
  {
    if (strncmp(strAction, acAllowedCodes[i], strlen(acAllowedCodes[i])) == 0)
    {
      return i;
    }
  }

  return(-1);
}

int main()
{
    char choose[30] = {0};
    scanf("%s", choose);
    switch(decodeLineType(choose))
    {
       case tambah :
         /* some logic here*/
       break;
       case kurang :
         /* some logic here*/
       break;
       default:
       break;
    }
    return(0);
}

Offtopic:当您即将在国际论坛上寻求指导时,请考虑使用英语为您的计划中的所有标签和变量名称。