Люди, помогите. Вообщем есть такая шняга:char *devices[5];
char cnf;
devices - массив массива символов или массив строк, я так понимаю.
cnf - массив символов или просто строкаВообщем получается бойда, в цикле cnf присваиваются различные значения, которые должны записываться в массив devices. В результате во всех элементах массива, в конце цикла, будет последнее значение cnf. Я так понимаю, что в массив передается не значение а адрес переменно cnf, в результате чего меняя переменную у меня меняется и значения в массиве.
Вообщем как мне передавать значение переменной в элементы массива, а не ее адрес?
Заранее спасибо.
>
>char *devices[5];
>char cnf;
>devices - массив массива символов или массив строк, я так понимаю.
>cnf - массив символов или просто строка
>Чтоюы это было так надо писать
char *cnf;
или если размер фиксированный
char cnf[100];И вообще сложно понять, что ты хотел сказать. Приведи код.
Сейчас попробую.--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. Что я не так делаю, поможите, плиз.
>char *devices[5];Здесь у тебя написано, что ты хочешь выделить память для пяти указателей на char (хотя указатель на что не важно). Заметь что для самих строк ты не запросил память. Поэтому такая беда у тебя и получается.
Выходы:
- пользоваться malloc
- но как я вижу по постановке задачи тебе хватит и этого
char devices[5][32];