C语言 我如何修复printf在else中不打印如果?[关闭]

brgchamk  于 2023-05-28  发布在  其他
关注(0)|答案(2)|浏览(179)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
5天前关闭。
Improve this question
我正在做一个小练习,允许你在c中创建一个密码来测试我已经掌握的一些知识。密码必须具有的属性之一是感叹号。

char password[15];
char *spche = strchr(password, '!');
while (spche != NULL)
{
    if (spche != 0) {
        printf("cool"); 
        spche = strchr(spche+1,'!');
    } else if (spche == 0) { 
        printf("Please include '!' in your password");
        // spche = strchr(spche+1,'!');
    }
}

我能够找到感叹号,如果它在那里,这将推动“酷”打印。但是,当没有感叹号时,它只是完成代码,而不执行else if print。谢谢你给我的每一条建议。

mo49yndu

mo49yndu1#

根据strchr
strchr()和strrchr()函数返回一个指向匹配字符的指针,如果找不到该字符,则返回NULL。
因此,如果!不在char数组中,它将返回NULL,因此它不会首先执行while循环。

r8xiu3jd

r8xiu3jd2#

#include <stdio.h>
#include <string.h>
int main() {
    char password[15] = "hello!1234!0j";
        

    char * spche = strchr(password, '!');

    if (spche != NULL) {
        printf("cool");
    }
    else {
        printf("invalid keywords");
    }

    return 0;
}

相关问题