Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C While循环更改字符串变量_C_String_While Loop - Fatal编程技术网

C While循环更改字符串变量

C While循环更改字符串变量,c,string,while-loop,C,String,While Loop,作为c编程的新手(我只有visual basic方面的经验),我不完全确定在条件语句中带有变化字符串变量的while循环应该如何工作 下面的代码是我制作的一个简单计算器,它允许用户输入一个运算和两个数字,然后输出相应的结果。我试图在一个while循环中编码,该循环不断重复该过程,直到用户决定退出它。但是,行scanf(“%c”,&quit);不影响while循环条件语句 #include <stdio.h> int main() { float num1, num2; char o

作为c编程的新手(我只有visual basic方面的经验),我不完全确定在条件语句中带有变化字符串变量的while循环应该如何工作

下面的代码是我制作的一个简单计算器,它允许用户输入一个运算和两个数字,然后输出相应的结果。我试图在一个while循环中编码,该循环不断重复该过程,直到用户决定退出它。但是,行scanf(“%c”,&quit);不影响while循环条件语句

#include <stdio.h>

int main() {
float num1, num2;
char operation;
char quit = "n";
while (quit = "n"){
printf("Enter an operator (+, -, *, /) \n");
scanf(" %c", &operation);
printf("Enter the numbers you wish to carry out the operation on \n");
scanf("%f %f", &num1, &num2);
    switch(operation) {
        case '+':
            printf("%f\n", num1+num2);
            break;
        case '-':
            printf("%f\n", num1-num2);
            break;
        case '*':
            printf("%f\n", num1*num2);
            break;
        case '/':
            printf("%f\n", num1/num2);
            break;

    }
printf("Would you like quit the program, is so enter 'y' \n");
scanf("%c", &quit);
}
return 0;
}
#包括
int main(){
浮点数num1,num2;
字符操作;
char quit=“n”;
while(quit=“n”){
printf(“输入运算符(+、-、*、/)\n”);
scanf(“%c”,操作(&O);
printf(“输入要在其上执行操作的编号\n”);
scanf(“%f%f”、&num1、&num2);
开关(操作){
格“+”:
printf(“%f\n”,num1+num2);
打破
案例'-':
printf(“%f\n”,num1-num2);
打破
案例“*”:
printf(“%f\n”,num1*num2);
打破
案例“/”:
printf(“%f\n”,num1/num2);
打破
}
printf(“是否要退出程序,请输入'y'\n”);
scanf(“%c”,&quit);
}
返回0;
}

提前感谢您的帮助。

while(quit=“n”)
替换为
while(quit!=“y”)
这是因为您在while循环中分配quit变量的值,而不是检查其值

用于=

while(quit == "n"){...}

你可以这样做

#include <stdio.h>
int main() {
float num1, num2;
char operation;
char quit = 'n';
//while (quit = "n") //
  while (quit!= 'y')
 {
printf("Enter an operator (+, -, *, /) \n");
scanf(" %c", &operation);
printf("Enter the numbers you wish to carry out the operation on \n");
scanf("%f %f", &num1, &num2);
switch(operation) {
    case '+':
        printf("%f\n", num1+num2);
        break;
    case '-':
        printf("%f\n", num1-num2);
        break;
    case '*':
        printf("%f\n", num1*num2);
        break;
    case '/':
        printf("%f\n", num1/num2);
        break;

}
printf("Would you like quit the program, is so enter 'y' \n");
scanf("%c", &quit);
 }
return 0;
}
#包括
int main(){
浮点数num1,num2;
字符操作;
char quit='n';
//while(quit=“n”)//
while(退出!=“y”)
{
printf(“输入运算符(+、-、*、/)\n”);
scanf(“%c”,操作(&O);
printf(“输入要在其上执行操作的编号\n”);
scanf(“%f%f”、&num1、&num2);
开关(操作){
格“+”:
printf(“%f\n”,num1+num2);
打破
案例'-':
printf(“%f\n”,num1-num2);
打破
案例“*”:
printf(“%f\n”,num1*num2);
打破
案例“/”:
printf(“%f\n”,num1/num2);
打破
}
printf(“是否要退出程序,请输入'y'\n”);
scanf(“%c”,&quit);
}
返回0;
}

char quit=“n”
不是C。了解单引号和双引号之间的差异启用所有编译器警告,并注意它们。肯定会了解差异,目前在程序中使用整数作为“是”和“否”选项,似乎工作正常,但在了解更多信息后将对其进行修改。谢谢大家的帮助,我真的很感激:)@twalberg-我所有的编译器警告都已启用,它们确实有助于确保我不会遗漏任何愚蠢的东西。不过,似乎没有发现这段代码有任何错误。虽然运算符的选择肯定是错误的,但这也不正确。您无法通过这种方式将单个字符与静态字符串文字进行比较,并期望从中获得任何有意义的内容…感谢您的帮助,这是一个如此简单的错误,您甚至不知道有不同的值检查操作,-如在visual basic中,一个等号似乎可以同时起到两个作用-。这个答案确实解决了我的问题,我认为反对票完全是因为在一个字符上使用了双引号,而不是单引号。