The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Указатель на структуру в С"
Отправлено RomanB, 21-Фев-08 14:35 
Всем привет!
Какой-то глупый затык, но в голову ничего не лезит, уже 2 дня ничего не могу понять.
Есть код:

/************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <syslog.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>

char ch_main_error[255];     //Error messages
int i_ini_file;         //ID of ini-file

char ch_read_data_[1];         // Temporary variable for reading simbols from ini-file
char ch_read_data[255];     // Variable for buildinf string
int i_read_count;        // Count of readed simbols

typedef struct{    
    char ch_string[255];
    int i_type;         /*0 - section, 1 - key, 2 - comment, 3 - empty string */
    char ch_sec_name[20];
    char ch_name[20];
    char ch_value[255];
} str_ini_data;

//int y;
str_ini_data s_ini_data;


int iReadIniFile(char* ch_ini_file){

    int i_num = 0;

    i_read_count = 0;
    strcpy(ch_read_data,"");
    strcpy(ch_read_data_,"");

    if ((i_ini_file = open(ch_ini_file, O_RDONLY)) < 0 ){
    strcpy(ch_main_error,"IniParser:iReadIniFile: Can't open file.");
    return -1;
    }

    str_ini_data *ptr_ini_data;
    ptr_ini_data = &s_ini_data;
    
    ptr_ini_data = (str_ini_data *) malloc(sizeof(str_ini_data));
    
    while(i_read_count = read(i_ini_file,ch_read_data_,1)){
    if (ch_read_data_[0] == '\n'){
        ptr_ini_data = (str_ini_data *) reallocf(ptr_ini_data,(sizeof(str_ini_data)));
        stpcpy(ptr_ini_data[i_num].ch_string, ch_read_data);
/*****/        printf("");
        strcpy(ch_read_data,"");
        strcpy(ch_read_data_,"");
        i_num++;
    }
    strncat(ch_read_data,ch_read_data_,1);
    }

    free (ptr_ini_data);
    return 0;
    
}

int main(){
    strcpy(ch_main_error,"");
    printf("%i\n%s\n",iReadIniFile("./lib.ini"),ch_main_error);
    return 0;
}

/************************************************************/

Со строчкой printf(""); все работает, вопросов не возникает. Но как только каментю ее -- прога вылетает с созданием core-файла. Парни, подскажите, в чем проблема???? Может сама логика увеличения памяти под структуру неверная???
Еще вопрос: подскажите чем на FreeBSD кору разобрать удобно?
Заранее, огромное спасибо.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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