【问题标题】:How to use switch statement to assign a string value to a variable如何使用 switch 语句将字符串值分配给变量
【发布时间】:2020-10-01 03:27:56
【问题描述】:

我的程序的目的是计算不同城市之间旅行的费用。该程序将给出来源城市列表,然后是目的地城市列表。用户可以通过输入每个城市的首字母来选择他们的城市。

我希望程序能够从用户那里获取输入并将其分配给给定城市之一。

//Declarations
    char src_city[15];
    char dest_city[15];
system("cls");
    puts("\n");
    printf("ENTER THE SOURCE CITY: \n\n");
    printf("B for Baltimore\n\n");
    printf("C for Chattanooga\n\n");
    printf("N for Nashville\n\n");
    printf("P for Pasadena\n\n");
    puts("");
    scanf("%c", &src_city);
    switch(src_city)
    {
    case 'B': case 'b': ("Baltimore");
    break;
    case 'C': case 'c': ("Chattanooga");
    break;
    case 'N': case 'n': ("Nashville");
    break;
    case 'P': case 'p': ("Pasadena");
    break;
    }
    getchar();

“B”、“C”、“N”和“P”是我希望用户输入的字母,并在他们输入时将其分配给相应的城市。

但是,当我使用这种方法时,我得到了错误:

“赋值给数组类型的表达式”。

我查找了这个错误,然后我被告知使用 if/else if 语句,这反过来又以类似的方式失败。 switch 语句方法对我来说最有意义。

我需要将字符串值分配给相应的变量 (src_city/dest_city),因为稍后我需要在 printf() 语句中调用这些变量。

【问题讨论】:

    标签: arrays c if-statement pointers switch-statement


    【解决方案1】:

    您没有显示有问题的实际代码,但从问题描述中猜测(“数组类型的表达式赋值”),您正在尝试类似

      src_city = "Baltimore";
    

    这是无效的,因为数组类型的变量不是可修改的左值,因此不能分配给。你需要使用strcpy(),比如

     strcpy(src_city , "Baltimore");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 2019-12-05
      • 2011-02-25
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多