2017-02-12 8 views
-2

Мне нужно добавить char в char array. Это мой код:Добавление char в массив символов в C

#define BUFFSIZE 1024 
char *first_name[][BUFFSIZE]; 
char *last_name[][BUFFSIZE]; 

int j = 0; 
first_name[][j] = "John"; 
last_name[][j] = "Doe"; 

Является ли это правильный путь, чтобы войти «Джон» и «Doe» в ноль-й позиции соответствующих массивов?

+1

Читайте на 'strcpy', а также, возможно, вам нужно' символ first_name [BUFFSIZE]; ' –

ответ

0

Ваше объявление

char *first_name[][BUFSIZE]; 

объявляет 2-мерный массив указателей. Если вам нужен массив строк, это должно быть:

char first_name[][BUFSIZE]; 

Однако это не соответствует размеру первого измерения. Опускание размера разрешено только в объявлениях аргументов функции, потому что на самом деле это сокращение для объявления указателя (поскольку передача массива функции распадается на указатель) или объявление объявления гибкого элемента массива (который должен быть последним членом a struct, поэтому вы не можете иметь два из них в одной структуре). Я предполагаю, что ваши переменные являются фактически функциональными параметрами.

Вы не можете использовать задание, чтобы заполнить строку в C, вы должны использовать strcpy():

strcpy(first_name[i], "John"); 
+0

Я попытался это сделать. Но массив не сохраняет свои значения. Имя first_ внутри цикла for, и значение, кажется, изменяется для first_name [0] после третьей или четвертой итерации. –

+0

Пожалуйста, опубликуйте [MCVE] (http://stackoverflow.com/help/mcve), который демонстрирует проблему. – Barmar

+0

Вы можете получить доступ к коду здесь https://docs.google.com/document/d/1T4j3S_MEd0EKekMGGKi0z-nQYZVQmou1mUdUrn3x7rE/edit?usp=sharing –

Смежные вопросы