C编程如果语句变量改变

时间:2018-02-22 13:13:02

标签: c

稍后在我的程序中,我想打印出用户在这里选择的目的地,我该怎么做?

void create(){
    char name[200],from,to;
    int age;


    printf("Please enter your name :\n");
    scanf("%s",&name);
    printf("Please enter your age :\n");
    scanf("%d",&age);   
    printf("Pick your current destination");
    printf("\n1 for London\n2 for Manchester\n3 for Brighton\n4 for 
Liverpool\n4 for reading\n5 for coventry\n");
    scanf("%s",&from);

    if(from == 1){
        printf("Select your desired destination %s",&from);
        from =("London");

3 个答案:

答案 0 :(得分:1)

看来你的意思是

scanf( " %c", &from );
       ^^^^^

//...

if( from == '1' ){
            ^^^

答案 1 :(得分:0)

简而言之,如果您想要访问本地变量from,声明内部功能create(),则无法 [你可以希望变量在函数返回后位于同一地址并尝试访问同一个地址,希望该值仍然存在,但这是 UB ] 。 / p>

你能做的就是将它声明为全局,或者从函数

返回它
// option 1) global variable
char from;
int main(){
    ... create(); // don't declare from inside the function, because it is already declared globaly
    // do something with from
    ... }

// option 2) return from function - need to change the create function to return the from variable
char from;
int main(){
    from = create();
    // do something with from
    ... }

请注意,您错误地使用了scanf / printf

  • scanf("%s",&from);应该是scanf("%c",&from);,因为来自char,而不是char[]char*
  • printf("Select your desired destination %s",&from);应为printf("Select your desired destination %c",from);

答案 2 :(得分:0)

这里......程序没​​有位置的任何变量....这意味着你无法从任何地方获取要打印的数据....所以程序必须有程序中的数据本身....如果不是.....没有来源没有数据......

如果你想继续保存程序......你可以使用switch语句并在以后显示该值:

switch(from){
case 1:
     printf("London\n");
     break;
case 2:
     printf("Manchestar\n");
     break;
case 3:
     printf("Brigeton\n");
     break;
default:
     //(default Option);
}

您还可以使用字符数组。 例如:

int from;
int location[3][10]={"London","Manchestar","Brigeton"};
printf("\n1.London\n2.Manchestar\n3.Brigeton");
printf("\nChoose whose city do you want to visit: ");
scanf("%d",&from);
printf("You have choosen %s",location[from-1]);

通过这种方式,我们可以为最终用户提供选择,我们也可以直接获取数据......