我可以用字符串做条件吗?

问题描述 投票:0回答:1

我对编程完全陌生,所以我开设了 CS50 课程并开始使用 c 进行编码。 (对不起,英语不是我的母语)。我决定创建自己的小程序,但在第一步就遇到了问题,我自己无法解决。如果有人有空闲时间,请给我建议。

在我的节目中我问一个问题:你想看霸王吗? 我正在等待“是”或“否”。每个答案都会导致不同的结果。 代码的第一部分正在工作,但是程序接受任何答案,就像我的“如果”不存在一样。 我不明白这是什么问题。 如果我的问题很愚蠢,我很抱歉。

#include <stdio.h>
#include <cs50.h>
int main()
{
    printf("Do you want to watch Overlord?\n");
    string s = get_string("");
    if((s = "yes"))
        printf("How old are you?\n");
}
c if-statement
1个回答
0
投票

if((s = "yes"))
尝试将变量
s
的值设置为
"yes"
。 (事实并非如此,但这是另一个答案。)

单个值之间的比较通过

==
完成。但是您正在比较字符串,每个字符都有其自己的值。你需要使用一个特殊的功能,
strcmp

if((strcmp(s, "yes") == 0)
我们检查 0,因为
strcmp
检查字符串在字母表中是否位于彼此之前或之后,如果相等则检查 0。


您的编译器应该就

if((s = "yes"))
向您发出警告,但 C 编译器通常会关闭警告。请务必打开编译器警告。

C 有很多很多令人困惑的编译器警告选项

-Wall
不会打开所有警告。典型编译器警告标志的一个很好的组合是
-Wall -Wshadow -Wwrite-strings -Wextra -Wconversion -pedantic
。告诉编译器要使用哪个版本的 C 也很有用,如果没有它,它可能会使用非常旧的 1990 版本。
-std=c17
使用2017版本。

© www.soinside.com 2019 - 2024. All rights reserved.