我试图在我的 C 代码中进行 while 循环
像这样:
main()
{
char q ;
while( a == 'yes' )
{
/* my code */
printf("enter no to exit or yes to continue");
scanf("%s",q);
}
}
但是当我输入字符“q”时......控制台崩溃了
并停止工作
我在while循环中有什么问题?
我试图在我的 C 代码中进行 while 循环
像这样:
main()
{
char q ;
while( a == 'yes' )
{
/* my code */
printf("enter no to exit or yes to continue");
scanf("%s",q);
}
}
但是当我输入字符“q”时......控制台崩溃了
并停止工作
我在while循环中有什么问题?
您不能将字符串与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);
}
}
有几个错误:
"yes"
,而不是'yes'
.scanf
需要变量的地址:scanf("%s", &q)
,而不是scanf("%s", q)
。char q[4]
),而不是字符一 ( 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;
}
PS我想过构造一个格式字符串来避免重复3
,但我的懒惰赢了。
使用 scanf("%s",&q);
而不是scanf("%s",q);
.
您没有在函数中传递'q'
变量的地址。scanf
你有很多错误。1. 一个字符只是一个字符 - 事实上它实际上是一个数字 2. 你用单引号写“是”。这给出了一个 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
}
}
这可能对你有用。我手头没有交流编译器,所以我无法测试它。
}
};
没有 q 的地址,尝试在 q 之前添加 &,并添加 strcmp(a, "yes") 以正确评估表达式。
class WhileLoopExample {
public static void main(String args[]){
int i=10;
while(i>1){
System.out.println(i);
i--;
}
}
}