Yumowww 发表于 2017-5-6 19:54:35

while条件可以用字符串吗

#include <stdio.h>
int main (void)
{
    char key;
    printf("Please enter cipher:");
    scanf("%s", &key);
    while (key != "pizza")
    {
      printf("\nfalse!\nPlease enter cipher:");
      scanf("%s",&key);
    }
    printf("True!");

    return 0;
}

代码如上,输对也跳不出循环

Yumowww 发表于 2017-5-6 19:56:41

#include <stdio.h>
int main (void)
{
    int key;
    printf("Please enter cipher:");
    scanf("%d", &key);
    while (key != 9)
    {
      printf("\nfalse!\nPlease enter cipher:");
      scanf("%d",&key);
    }
    printf("True!");

    return 0;
}

数字的话就可以是字符串条件不应该这样设定吗

huangz5426 发表于 2017-5-6 21:21:53

本帖最后由 huangz5426 于 2017-5-6 21:34 编辑

#include <stdio.h>
#include <string.h>        //加了个头文件

int main (void)
{
    char key;
    printf("Please enter cipher:");
    scanf("%s", &key);
       
   // while (key != "pizza")
       
        while ( strcmp(key,"pizza") )        //楼主百度以下strcmp吧
    {
      printf("\nfalse!\nPlease enter cipher:");               
      scanf("%s",&key);
               
    }
    printf("True!\n");

    return 0;
}

一语终难尽思愁 发表于 2017-5-6 22:41:55

利用strcmp函数来比较
while(strcmp(key,"pizza")!=0)

为了明天而加 发表于 2017-5-7 23:22:33

不好意思,应该改为while(strcmp(key,"pizza") != 0)

本帖最后由 为了明天而加 于 2017-5-7 23:24 编辑

其实楼主这段代码存在错误哦。第八行中,在scanf函数中,既然是输入字符串,key前面就不能加取地址符号&。因为数组名本身就是数组的首地址。所以在第八和第十五行中去掉&。另外,你的while循环语句的循环条件也不恰当,因为key 与“pizza"的比较会出现三种情况,等于0,小于0,大于0。小于或等于0都会被判断为”假“,因此应该把循环条件改为while(strcmp(key,"pizza")==0)。这样应该据没什么问题了。希望对你有帮助,不懂可以追问

Krant5 发表于 2017-5-8 14:54:26

C语言没有 str="dahdadiah"这种比较方法,这比较的是两个地址,不可能相等的
页: [1]
查看完整版本: while条件可以用字符串吗