URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1951
[ Назад ]

Исходное сообщение
"Помогите начинающему"

Отправлено Longer , 06-Авг-03 10:46 
Люди, помогите. Вообщем есть такая шняга:

char *devices[5];
char cnf;
devices - массив массива символов или массив строк, я так понимаю.
cnf - массив символов или просто строка

Вообщем получается бойда, в цикле cnf присваиваются различные значения, которые должны записываться в массив devices. В результате во всех элементах массива, в конце цикла, будет последнее значение cnf. Я так понимаю, что в массив передается не значение а адрес переменно cnf, в результате чего меняя переменную у меня меняется и значения в массиве.

Вообщем как мне передавать значение переменной в элементы массива, а не ее адрес?

Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"Помогите начинающему"
Отправлено Alexey , 06-Авг-03 16:24 

>
>char *devices[5];
>char cnf;
>devices - массив массива символов или массив строк, я так понимаю.
>cnf - массив символов или просто строка
>

Чтоюы это было так надо писать

char *cnf;
или если размер фиксированный
char cnf[100];

И вообще сложно понять, что ты хотел сказать. Приведи код.


"Помогите начинающему"
Отправлено Longer , 06-Авг-03 17:31 
Сейчас попробую.

--cut--
char *devices[5];
char cnf[32];
char cnf1[32];
int count;
--cut--

далее открываю файл и в цикле до конца файла читаются из него данные

count=-1;
while(feof(fd) == 0){
count++;
fgets(cnf, 32, fileconf);
--cut--
strncpy(cnf1, cnf, strlen(cnf)-1); // копирую из cnf в cnf1 без \n
--cut--
devices[count] = cnf1; }
^
вот тут и появляются траблы, все уже перепробовал и так и сяк, хрен знает, в результате во всех элементах массива devices у меня остается последнее значение cnf1. Что я не так делаю, поможите, плиз.


"Помогите начинающему"
Отправлено Alexey , 06-Авг-03 18:04 

>char *devices[5];

Здесь у тебя написано, что ты хочешь выделить память для пяти указателей на char (хотя указатель на что не важно). Заметь что для самих строк ты не запросил память. Поэтому такая беда у тебя и получается.
Выходы:
- пользоваться malloc
- но как я вижу по постановке задачи тебе хватит и этого
char devices[5][32];