【问题标题】:C - Is there a way to put variables inside single or double quotation marks in an if statement?C - 有没有办法在 if 语句中将变量放在单引号或双引号内?
【发布时间】:2017-01-24 19:38:59
【问题描述】:

我在比较 if 语句中的字符和字符串时遇到问题。 我正在尝试制作一个不太复杂的 Hangman 版本,但我被困在这部分。 我已经尝试了 strcmp()strchr() 以及其他的所有方法,但似乎没有任何效果。

#include<stdio.h>  
#include<string.h> 

int main() {  
    int length, i;
    int size=3;
    char word[size]="car";
    char letter;
    //const char* word="car";
    //const char* letter;
    int guess;
    length=strlen(word);

printf("The given word has %d letters.\n", length);
//do {
    guess=0;
    printf("Enter a letter:");
    scanf("%c", &letter);
    for (i=0; i<length; i++) {
        if (letter== 'word[i]' && guess==0) {
            guess=1;
        }
        /*if (strchr(letter, word[i])!=NULL && guess==0) {
            guess=1;
        }*/
    }
    if (guess=1) {
        printf("Correct letter.\n");
    }
    else {
        printf("Wrong letter.\n");
    }
//} while ();
}

我不知道该做什么,我到处寻找我能做什么。我不想使用已经制作的 Hangman 游戏,因为我正在尝试作为初学者自学,因为这些代码对于我简单的头脑来说太复杂了。

我试图让我的代码保持简单,从上面的代码中可以看出,一切都设置得非常简单。我距离完成代码还有很长的路要走,但我只想在继续之前找到解决这个问题的方法。

谢谢!

【问题讨论】:

  • char word[3]="car"; - 哦,哦!那是行不通的。您需要 4 个字符来存储字符串“car”。请记住,空终止符需要一个额外的字符。
  • 您确定您的代码有效吗? O_o,我不是,看这行letter== 'word[i]'

标签: c string variables if-statement


【解决方案1】:

word[i]letter 都是 char 类型,因此只需比较它们即可。

if (letter==word[i] && guess==0) {

其他错误:

scanf("%c", &letter);

您需要在模式开头有一个前导空格来吃掉任何空格,否则您最终会读取换行符。

scanf(" %c", &letter);

还有:

if (guess=1) {

这是一个分配,而不是比较。你想要:

if (guess==1) {

还有:

int size=3;
char word[size]="car";

数组不够大,因为您没有空间容纳空终止字符。在这种情况下,只需省略大小,编译器就会使用正确的值。

char word[]="car";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 2018-05-09
    • 2017-11-26
    • 1970-01-01
    相关资源
    最近更新 更多