Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 字符数组的数组C++;_C++_Arrays - Fatal编程技术网

C++ 字符数组的数组C++;

C++ 字符数组的数组C++;,c++,arrays,C++,Arrays,我正在编写一个交换程序,我有一个字符数组,其中包含另外6个字符数组。该程序运行良好,除了一件事:当我试图打印数组的值时,它只打印第一个字母 也许代码不对,但我没有找到另一种方法来进行交换。事实上,我认为问题在于指向那个数组的指针,但我还是不确定 代码如下: #include <iostream> #include <string> #include <fstream> #include <stdlib.h> using namespace std;

我正在编写一个交换程序,我有一个字符数组,其中包含另外6个字符数组。该程序运行良好,除了一件事:当我试图打印数组的值时,它只打印第一个字母

也许代码不对,但我没有找到另一种方法来进行交换。事实上,我认为问题在于指向那个数组的指针,但我还是不确定

代码如下:

#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;

int main(int argc, char* argv[])
{
  cout<<"EXCHANGE POKEMON:"<<endl;
char a[100]="PIKACHU", b[100]="CHARMELEON", c[100]="GEODUDE", d[100]="GYARADOS", e[100]="BUTTERFREE", f[100]="MANKEY", tmp[100];
char t[6] = {*a,*b,*c,*d,*e,*f};

while(1)
{
  for(int i = 0; i < 6; i++)
  {
    cout << i << ") " << t[i] <<endl;
  }

  cout<<endl<<"Choose a pokemon:";

  int x, y;
  cin>>x;

  if(x == -1)
  {
    exit(0);
  }
  cout << "Choose a pokemon to exchange with:";
  cin>>y;

  *tmp = t[x];
  t[x] = t[y];
  t[y] = *tmp;
  }
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
用这条线可以:

char t[6];
您并不是在创建一个字符数组,而是在创建一个简单的字符数组。因此,毫不奇怪,每个元素都是一个字符

您可能想要:

char *t[6] = {a, b, c, d, e, f};
请注意,
*a
实际上相当于
a[0]

然后
tmp
数组被错误地使用:在C中,您使用
strcpy()
复制字符串,而不是使用赋值运算符。或者,您持有指向原始字符串的指针


但是你使用C++,为什么不使用<代码> STD::String ?也许你只是学习数组,想硬的做它?< /P> < p>你定义了代码> t>代码>作为一个数组,初始化了以前定义的数组的地址。这相当于获得了第一个元素。

*a is equivalent to a[0]
您要查找的是一个字符指针数组:

char *t[6] = {a,b,c,d,e,f};

请先修改格式。对于未来的帖子,请在发布前检查预览。如果是C++,为什么不直接用字符串来表示(并交换它们)?另外:“我有一个字符数组,它包含另一个6个字符数组”。不需要。你需要更仔细地阅读你的学习材料;如果它实际上告诉你使用C数组来进行字符串操作,你应该得到一本更好的书。是的,你是对的,我选了一门C++课程,这就是我为什么要这样做的原因。顺便说一下,谢谢你的帮助。