2016-11-13 3 views
-2

У меня есть следующие два 2D-массива C-строк. Я пытаюсь скопировать первый на второй, используя функцию strcpy(). Тем не менее, я продолжаю получать ошибку времени выполнения.Ошибка проверки времени выполнения # 2 - s для массива C-строк

#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; 
} 
+0

Я уверен, что а) вам будет лучше помочь, если вы предоставили фактическую ошибку времени выполнения, и b) вы должны предоставить достаточно места для каждой из строк. Нет строки SINGLE, которая помещается в массив из 3 символов, если вы считаете завершающий нуль. –

+0

Кроме того, строка 'temp' еще короче, чем' word' и не может ничего удерживать. Почему бы вам сначала не попробовать что-то проще, например, использовать C++ 'std :: string' и оставить этот жесткий материал позже? –

+0

Вы используете два ** 1D ** массива «C-строк», BTW. Ваша цель добавить «столбец» (или строку) в реальный 2D-массив или перезаписать первый массив? –

ответ

0

В вашем коде я нахожу несколько ошибок.

  • ваш массив символов word1, word2, temp не инициализировать properly.you нужно увеличить size из array.
  • в цикле вы используете 3.it сломается ваш вывод, если длина вашего Уорда стать терки, чем 4.

Так вот я даю вам немного solution.But его лучше использовать user input как размер array так, что любой вход может соответствовать правильно.

#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; 
} 
Смежные вопросы