现在帮助我。告诉我我哪里错了。我正在做一个简单的电影猜谜游戏。
使用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]!='\0' ; 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]!='\0' ; 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]!='\0' ; 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]!='\0' ; 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<<"\n\nLives left: ";
display_life(life);
}
getch();
return 0;
}
答案 0 :(得分:1)
不要从电影检查中返回任何内容。只需更新函数中的temp_array即可。数组不按值传递。见Why can't we pass arrays to function by value?
答案 1 :(得分:1)
查看名为 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);