当我在数组中扫描时,它会更改另一个数组吗?

时间:2015-11-08 17:09:12

标签: c arrays

int main()
{

char word[]="elephant";
char display[]="********";
int size;
int chance=10;
char choice[1]="a";
int i=0;
int indic=0;
char choice_1;


size=strlen(word);


printf("Would you like to guess the word [w] or guess a letter [l]:");
scanf("%c", &choice_1);

while(chance>0)
{


i=0;

if(choice_1=='w')
{

printf("Enter the word:");
scanf(" %s", choice);

    if(strlen(choice)!=size)
    {

    printf("Enter a word with the correct number of letters\n");

    }

    if(strlen(choice)==size)

    {

        while(i<size)
        {

        if(choice[i]==word[i])
        {

        indic++;   

        }

        i++;

        }



    if(indic==size)
    {
        printf("You have guessed the word!\n");
        break;
    }

    if(indic!=size)
    {
        printf("You have incorrectly guessed the word\n");
        chance=chance-1;
    }

    }

}

i=0;

if(choice_1=='l')
{

printf("Enter a letter:");
scanf(" %s", choice);

i=0;
indic=0;

    while(i<=size)
    {

    if(choice[0]==word[i])
    {

    display[i]=word[i];
    indic=1;

    }

    i++;

    }

i=0;

if(indic==0)
{

printf("BAD CHOICE!\n");
chance=chance-1;

    while(i<=size)
    {

        if(i==size)
        {
        printf("%c\n", display[i]);
        }

    printf("%c", display[i]);
    i++;

    }

}

if(indic==1)
{

printf("GOOD CHOICE!\n");

    while(i<=size)
    {

        if(i==size)
        {
        printf("%c\n", display[i]);
        }

    printf("%c", display[i]);
    i++;

    }

}

}



printf("You have %d chances left\n", chance);

printf("Would you like to guess the word [w] or guess a letter [l]:");
scanf(" %c", &choice_1);

}

return 0;

}

我正在尝试为College建立一个刽子手程序,我今年才开始编程。但我遇到了这个问题。当我将输入输入数组“ choice [] ”时,由于某种原因,它也会更改数组“ display [] ”。例如,如果我为“ choice_1 ”和“ elephank ”输入“ w ”作为“ choice [] “(应该是大象)数组”显示[] “更改为” lephank “。为什么这样做?我甚至不使用该循环中的显示数组来检查该单词是否正确。我知道这是一个很大的代码块,但因为我不知道发生了什么 我不知道还能做什么。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:0)

  

我为“choice_1”和“elephank”输入“w”代表“choice []”

那是你的问题。 choice char (大小为1的“数组”),因此您只能存储一个单个字符。每个其他字符都存储在 choice 旁边,其中内存保留用于 display