C++ C字符串数组的运行时检查失败#2-s

C++ C字符串数组的运行时检查失败#2-s,c++,C++,我有以下两个C字符串的2D数组。我试图使用strcpy()函数将第一个复制到第二个。但是,我不断得到运行时错误 #define _CRT_SECURE_NO_WARNINGS #include <cstring> #include <iostream> using namespace std; int main() { char word1[3][3] = { "Hello", "Bonjour", "Ni Hao" }; char word2[3

我有以下两个C字符串的2D数组。我试图使用strcpy()函数将第一个复制到第二个。但是,我不断得到运行时错误

#define _CRT_SECURE_NO_WARNINGS

#include <cstring>
#include <iostream>

using namespace std;

int main() {

    char word1[3][3] = { "Hello", "Bonjour", "Ni Hao" };
    char word2[3][3] = { "Steve", "Pei", "Frank" };

    char temp[] = "";

    for (int i = 0; i < 3; i++) {
        strcpy(temp, word1[i]);
        strcpy(word1[i], word2[i]);
        strcpy(word2[i], temp);
    }


    for (int i = 0; i < 3; i++) {
        cout << word2[i] << " ";
    }

    cout << endl;
}
\define\u CRT\u SECURE\u NO\u警告
#包括
#包括
使用名称空间std;
int main(){
char word1[3][3]={“你好”,“你好”,“你好”,“你好”};
char-word2[3][3]={“Steve”、“Pei”、“Frank”};
字符温度[]=“”;
对于(int i=0;i<3;i++){
strcpy(临时,字1[i]);
strcpy(字1[i],字2[i]);
strcpy(word2[i],temp);
}
对于(int i=0;i<3;i++){

在你的代码中我发现了几个错误

  • 您的字符数组
    word1
    word2
    temp
    未正确初始化。您需要增加
    数组的
    大小
  • 在循环中使用3。如果单词长度大于4,则会中断输出
所以这里我给你一个小的解决方案。但是最好使用
用户输入
作为
数组的大小
,这样任何输入都可以正确匹配

#define _CRT_SECURE_NO_WARNINGS

#include <cstring>
#include <iostream>

using namespace std;

int main() {

    char word1[10][10] = { "Hello", "Bonjour", "Ni Hao" };//increase array size to fit word
    char word2[10][10] = { "Steve", "Pei", "Frank" };//same here

    char temp[10] = "";//same here

    for (int i = 0; i < 10; i++) {
        strcpy(temp, word1[i]);
        strcpy(word1[i], word2[i]);
        strcpy(word2[i], temp);
    }


    for (int i = 0; i <10; i++) {
        cout << word2[i] << " ";
    }

    cout << endl;
}
\define\u CRT\u SECURE\u NO\u警告
#包括
#包括
使用名称空间std;
int main(){
char-word1[10][10]={“你好”,“你好”,“你好”};//增加数组大小以适合word
char word2[10][10]={“Steve”、“Pei”、“Frank”};//此处相同
char temp[10]=“”;//此处相同
对于(int i=0;i<10;i++){
strcpy(临时,字1[i]);
strcpy(字1[i],字2[i]);
strcpy(word2[i],temp);
}

对于(int i=0;我合理地确定a)如果你提供了实际的运行时错误,你会得到更好的帮助,而B)你应该为每个字符串提供足够的空间。如果你考虑终止3,没有一个字符串适合于一个字符数组。首先尝试一些更简单的方法,比如使用C++ <代码> STD::String < /Cord>,然后再留这个硬的东西?你使用的是两个一维数组的“C字符串”,BTW.是你的目标,将一个“列”(或一行)添加到一个实际的2D数组中或覆盖第一个数组?