问:Do While Loop多重条件

时间:2014-10-16 16:45:59

标签: c

char name[20]="";
char address [50]= "";

do{
    printf("Input your name [1..20] : ");
    scanf("%s" ,name);
    fflush(stdin);
} while(strlen(name)>20);

do{
    printf("Input your address [1..50|| must contain \"Street\"] : ");
    scanf("%s",address);
    fflush(stdin);
} while((strcmp(address,"Street")) == 0 || (strlen(address) > 50)  || (strcmp(address,"Street") != 0));

大家好,我还是C的新手,我想问一下这段代码。我想创建一个程序,用户可以输入字符串,并且必须包含单词" Street"它可以输入50个字符,如果超过50个字符或没有单词" Street"然后程序会重复,所以我的问题是当我输入单词" Street blah blah" (超过50个字符)它仍然显示输出并且没有重复,所以有关于此代码的任何解决方案,或者有另一种解决方案可以帮助我完成任务。谢谢,抱歉我的英语不好(我希望答案是在C中因为我还在学习)

2 个答案:

答案 0 :(得分:0)

试试这个

while((strstr(address,"Street")==NULL || strlen(address)>50 ));

http://www.tutorialspoint.com/c_standard_library/c_function_strstr.htm

答案 1 :(得分:-1)

这部分代码错误

while((strcmp(address,"Street")) == 0 || (strlen(address) > 50)  || (strcmp(address,"Street") != 0));

因为你写了strcmp(address,"Street") == 0 || strcmp(address,"Street") != 0,这将永远导致true

尝试使用此

while((strstr(address,"Street")==NULL || strlen(address)>50 ));