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

Исходное сообщение
"Функция возвращает только числа :(("

Отправлено gsoftadmin , 26-Дек-03 12:40 
Всем трям.
У мну проблема. Есть функция, которая (по замыслу, по крайней мере :)) ) возвращает значение ключа из ini файла. Возвращает, ессно, как строку.
Но... Глюк в следующем: если в ключе только цифры, то все ок. Если же в ключе появляються буквы, то функция возвращает черт знает что.

Куда копать?

Сама функция вот:

     5 gchar *read_conf_value(FILE *fp, gchar *section, gchar *key)
      6 {
      7   char str_s[50];
      8   char str_k[100];
      9   char *p = NULL;
     10   static char rez[100];
     11   size_t len_sect;
     12   size_t len_key;
     13
     14   len_sect = strlen(section);
     15   len_key = strlen(key);
     16
     17   rewind(fp);
     18
     19   while (!feof(fp))
     20   {
     21     if ((fgets(str_s,50,fp)) && (!strncmp(str_s,section,len_sect)))
     22     {
     23       while (!feof(fp))
     24       {
     25         if ((fgets(str_k,100,fp)) && (!strncmp(str_k,key,len_key)))
     26           {
     27             p = strtok(str_k,key);
     28             strcpy(rez,p);
     29 #ifdef DEBUG
     30             add_log(p,"info_tag");
     31 #endif
     32             return rez;
     33           }
     34       }
     35     }
     36   }
     37   return rez;
     38 }


Содержание

Сообщения в этом обсуждении
"Функция возвращает только числа :(("
Отправлено SergCh , 29-Дек-03 08:35 
Может быть вообще не находит и выдаёт мусор?
Мог бы для начала проинициализировать, перед поиском, rez
Ну, типа, *rez = '\0';

"Функция возвращает только числа :(("
Отправлено gsoftadmin , 29-Дек-03 09:57 
>Может быть вообще не находит и выдаёт мусор?
>Мог бы для начала проинициализировать, перед поиском, rez
>Ну, типа, *rez = '\0';

Может, я в си и чайник, но на идиота не похож.
Если я написал, что числа возвращаются нормально, а строки нет, то так и есть.


"Функция возвращает только числа :(("
Отправлено genie , 30-Дек-03 00:09 
Ok, etot strtok() call - chto nahoditsya v key? Esche, esli strtok vozvratit NULL, chto budet togda?


>>Может быть вообще не находит и выдаёт мусор?
>>Мог бы для начала проинициализировать, перед поиском, rez
>>Ну, типа, *rez = '\0';
>
>Может, я в си и чайник, но на идиота не похож.
>Если я написал, что числа возвращаются нормально, а строки нет, то так
>и есть.



"Функция возвращает только числа :(("
Отправлено SergCh , 30-Дек-03 09:24 
Да не надо так нервничать, Просто ты не обрабатываешь исключительные ситуации.
Вот я и предположил, что возможно дело вней (люди не боги, могут и опечататься).

Ну и впринципе, правильней всё таки, пользоваться переменными проинициализировав их.

PS Ну, и если тебе не нравятся мои советы, я не заставляю ими пользоваться, просто проигнорируй.


"Функция возвращает только числа :(("
Отправлено gsoftadmin , 30-Дек-03 10:00 
>Да не надо так нервничать, Просто ты не обрабатываешь исключительные ситуации.
>Вот я и предположил, что возможно дело вней (люди не боги, могут
>и опечататься).
>
>Ну и впринципе, правильней всё таки, пользоваться переменными проинициализировав их.
>
>PS Ну, и если тебе не нравятся мои советы, я не заставляю
>ими пользоваться, просто проигнорируй.

Извини. Погорячился.
Задачка решена.
Кому интересно - http://clubpro.spb.ru/ubb/Forum14/HTML/001019.html