Двумерные массивы символов - PullRequest
0 голосов
/ 13 марта 2012

Недавно, когда я делаю код на C, мне нужно объявить двумерный массив следующим образом:

char foo[20][20];

Позже я назначу символьные массивы foo.

После этого мне нужно скопировать эти строки в некоторые другие переменные.

Копирование происходит так:

strcpy(date, foo[0]);
strcpy(name, foo[1]);
strcpy(des, foo[6]);
strcpy(cpy, foo[2]);

Поскольку я не поддерживал последовательность при копировании, как foo[0], foo[1], foo[6] и foo[2], я получил немного мусора в p3 вместе с исходной строкой.
Позже я исправил последовательность к foo[0], foo[1], foo[2] и foo[6] при копировании и получил ожидаемый результат.

Пожалуйста, проясните это.

На самом деле указатели p1, p2, p3 и p4 являются переменными в структуре. Структура идет как:

struct sample
{
    char date[9];
    char name[8];
    char des[8];
    char cpy[9];
};

1 Ответ

0 голосов
/ 13 марта 2012

Первый вариант: вы не инициализировали свою структуру или массив в 0, сначала проверьте, правильно ли вы вызываете memset () для обоих, используйте sizeof (), чтобы убедиться.

Второй вариант: выесли вы превысите размеры членов структуры, вы можете использовать вместо этого strncpy (), опять же, с помощью sizeof ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...