在 C 中创建一种查找表

creating a kind of look-up table in c

本文关键字:一种 查找 创建      更新时间:2023-10-16

这是我的代码:

int month()
  {
      //this array contains all of the months names
       char months[24] = {'JANUARY', 'FEBURARY',  'MARCH ', 'APRIL', 'MAY', 'JUNE',      'JULY',
                 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER', 'JAN',
                 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEPT', 'OCT', 'NOV',         'DEC'};

       char month_name[10];  // a null terminating char array for your month of birth
       cin >> month_name;
       for(int j = 0; j <= 24; j++ )
           {
             if(month_name == months[j])
           {
              return month_name;
           }
             else
           {
             cout << "n" << endl;
             show_error();
             cout << "n" << endl;
             bFlag = false;
             return bFlag;
           }
          }
        }

每当我尝试运行它时,我都会收到消息警告:隐式常量转换中溢出。这是什么意思?

首先,

您的月份名称应该在引号"之间,并使其成为一个char *数组

字符* 月份[] = {"一月", "二月",..."十二月"}

然后,如果返回值为 0,则不使用==使用 _stricmp 来比较字符串,则具有匹配项。

_stricmp 中的i表示忽略大小写(因此通过对小写字母进行比较,"一月"和"一月"被认为是相等的),否则使用strcmp

_stricmp记录在这里(stricmp在Visual Studio中已弃用),但请检查mux的评论,我不熟悉该功能,但他可能是对的!

正如 Nik B. 指出的那样,您应该始终返回一个 int。当您找到月份时,返回其索引(j)。看到您现在如何为月份添加短名称,您可以使用

return j % 12;
相关文章: