我试图在我的C代码中进行while循环
像这样:main()
{
char q ;
while( a == 'yes' )
{
/* my code */
printf("enter no to exit or yes to continue");
scanf("%s",q);
}
}
但是当我输入字符“q”时......控制台崩溃了
并停止工作
我在while循环中出错了什么?
答案 0 :(得分:6)
您无法将字符串与a == 'yes'
进行比较。您需要使用strcmp
函数。
你需要这样的东西:
int main(int argc, char **argv)
{
char a[200];
strcpy(a, "yes");
while( !strcmp(a, "yes") )
{
/* my code */
printf("enter no to exit or yes to continue");
scanf("%s",a);
}
}
答案 1 :(得分:5)
有几个错误:
"yes"
,而不是'yes'
。scanf
需要变量的地址:scanf("%s", &q)
,而不是scanf("%s", q)
。char q[4]
),而不是字符1(char q
)。a
中引用的变量while( a == 'yes')
。'\n'
。所以你可能需要的是:
#include <stdio.h>
#include <string.h>
#define INP_SIZE 3
int main() {
char inp[INP_SIZE + 1] = { 0 };
while (strcmp(inp, "yes")) {
printf("enter yes to continue or whatever else to exit\n");
scanf("%3s", inp);
}
return 0;
}
P.S。我想要构建一个格式字符串以避免重复3
,但我的懒惰赢了。
答案 2 :(得分:1)
使用scanf("%s",&q);
代替scanf("%s",q);
。
您未在'q'
函数中传递scanf
变量的地址。
答案 3 :(得分:1)
你有很多错误。 1. char只是一个字符 - 实际上它实际上是一个数字 你用单引号写'是'。这给出了一个char类型,你应该只用单引号中的单个字符。例如'Y' 3.在c字符串中保存为char数组,你不能像你想要的那样比较它们。
我没有检查过这个,但尝试类似:
main() {
char buf[255]; //Set up an array of chars to hold the string
buf[0] = '/0'; //set the first charactory in the array to a null charactor.
//c strings are null terminated so this sets it to an empty string
while ( strcmp(buf,"yes")==0) { //we have to use the strcmp function to compare the array
//also yes in double quotes is a null terminated char array so
printf("enter no to exit or yes to continue:"); //looks better with a colon
scanf("%s",buf); //scan f function will fill the buffer with a null terminated array
printf("\n"); //a new line here is nice
}
}
这可能对你有用。我手头没有c编译器,所以我无法测试它。
}
};
答案 4 :(得分:1)
没有q的地址,请尝试添加&amp;在q之前,添加一个strcmp(a,“yes”)来正确评估表达式。
答案 5 :(得分:0)
class WhileLoopExample {
public static void main(String args[]){
int i=10;
while(i>1){
System.out.println(i);
i--;
}
}
}