数组返回乐趣 movie_check()
Array Return fun movie_check()
现在帮我解决这个问题。告诉我哪里出错了。我正在制作一个简单的电影猜谜游戏。
有了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);
相关文章:
- CHECK(调用)函数在Google Colab中出错
- 'make check' GLIBC 运行时的链接问题
- 为什么我会收到"Run-Time Check Failure #2 - Stack around the variable 'pr' was corrupted"错误?
- rpmbuild check-rpath 报告错误,指出路径不是绝对的,不正确的
- 调用 dll 函数时"Run-Time Check Failure #0 - The value of ESP"
- 在创建完整对象之前编写 if-can-add check 方法的正确方法?
- "check if member exists using enable_if"中修改的代码不起作用
- Bison-3.0.4 中的 Linux 从头开始错误 'make check'
- SQL Server 2016 CLR 存储过程错误:"A system assertion check has failed"
- Linux Pybind11 'build check -j 4' 错误
- 十六进制值的SQLITE CHECK约束
- 读取视频文件"Open CV WARNING: Couldn't read movie file bird.avi"时出现问题
- C++ 操作数类型不兼容("Movie"和"nullptr")
- 我找不到程序中的歧义,但编译器说 check(int) 和 check(float) 之间存在歧义
- Check Writer:使程序将值10-19显示为单词
- Arduino to Raspberry crc32 check
- 错误 C2677:二进制'+=':找不到采用类型 'Movie' 的全局运算符(或者没有可接受的转换)
- 要求基类运算符执行"domain check" (C++)
- 类型 "std::string (*)[10]" 的参数与类型 "Movie *" 的参数不兼容
- "please check gdb is codesigned - see taskgated(8)" - 如何安装带有自制代码签名的gdb?