数组返回乐趣 movie_check()

Array Return fun movie_check()

本文关键字:check movie 返回 数组      更新时间:2023-10-16

现在帮我解决这个问题。告诉我哪里出错了。我正在制作一个简单的电影猜谜游戏。

有了check_movie()我正在尝试在每次猜测后从其临时数组中更新电影。

我收到以下错误:将char*分配给char[100]的类型不兼容它与check_movie()我哪里出错了?

我第一次尝试从任何函数返回一个数组。我只是一个初学者。我在谷歌上搜索了很多关于返回数组的信息,但这些示例超出了我的大脑范围。

#include<iostream.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<conio.h>
void display_movie(char movie_temp[], int);
void display_life(int);
int win_player2(char movie_temp[]);
int check_life(char movie[], char, int);
char *check_movie(char movie[], char movie_temp[], char ch); //not sure about this func.
char *check_movie(char movie[], char movie_temp[], char ch)
{
    for(int i=0 ; movie[i]!='' ; i++)
    {
        if(movie[i]==ch)
        movie_temp[i]=movie[i];
    }
    return movie_temp;
}
void display_movie(char movie_temp[], int len)
{
    for(int i=0 ; i<len ; i++)
    cout<<movie_temp[i];
}
void display_life(int life)
{
    for(int i=0 ; i<=life ; i++)
       cout<<"3";
}

int check_life(char movie[], char ch, int life) 
{
    int count1=0;
    for(int i=0 ; movie[i]!='' ; i++)
    {
        if(movie[i]==ch)
           count1++;
    }
    if(count1==0)
       return --life;
    else
       return life;
}
int win_player2(char movie_temp[])
{
    int count=0;
    for(int i=0 ; movie_temp[i]!='' ; i++)
    {
        if(movie_temp[i]=='_')
          count++;
    }
    if(count==0)
       return 0;
    else
       return 1;
}

int main()
{
    char movie[100], movie_temp[100], ch;
    cout<<"Enter the movie: ";
    cin.getline(movie,100);
    int len= strlen(movie);
    system("cls");

    for(int i=0 ; movie[i]!='' ; i++)
    {
        if(movie[i]=='a' || movie[i]=='e' || movie[i]=='i' || movie[i]=='o' || 
           movie[i]=='u' || movie[i]==' ')
              movie_temp[i]= movie[i];
    else
        movie_temp[i]='_';
    }
    int life=9;
    cout<<"nLives left: ";
    display_life(life);

    while(life!=0 || win_player2(movie_temp)!=0)
    {
        cout<<"n";
        display_movie(movie_temp, len);
        cout<<"nEnter your guess: ";
        cin>>ch;
        life=check_life(movie, ch, life); //Here I update life
        //Updates life after every guess.
        movie_temp=check_movie(movie, movie_temp, ch);
        /*This part is getting me errors. I am trying to update movie_temp after every         
          guess.*/          

        cout<<"nnLives left: ";
        display_life(life);
   }
   getch();
   return 0;
}

不要从电影检查中返回任何内容。 只需更新函数中的temp_array即可。 数组不按值传递。 请参阅为什么我们不能按值传递数组以运行?

查看名为 movie_temp 的变量

char movie_temp[100]
// ...
movie_temp=check_movie(movie, movie_temp, ch);

可以将数组视为硬编码的内存地址。 所以这将与以下代码相似。

5 = this_function_returns_an_int();

这显然是错误的。 不能分配给常量。 如果希望内存地址是可赋值变量,则需要指针而不是数组。

如果我可以建议,为check_movie做这样的事情。

// Updates movie_temp[] with characters from movie[] matching ch.  Wheel Of Fortune style.
// return true if any characters matched ch.  return false otherwise.
bool check_movie(char movie[], char movie_temp[], char ch);