The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Помогите начинающему"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите начинающему"
Сообщение от Longer emailИскать по авторуВ закладки on 06-Авг-03, 10:46  (MSK)
Люди, помогите. Вообщем есть такая шняга:

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

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

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

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Помогите начинающему"
Сообщение от Alexey Искать по авторуВ закладки on 06-Авг-03, 16:24  (MSK)

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

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

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

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Помогите начинающему"
Сообщение от Longer emailИскать по авторуВ закладки on 06-Авг-03, 17:31  (MSK)
Сейчас попробую.

--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. Что я не так делаю, поможите, плиз.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Помогите начинающему"
Сообщение от Alexey Искать по авторуВ закладки on 06-Авг-03, 18:04  (MSK)

>char *devices[5];

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру