Форум программистов, компьютерный форум CyberForum.ru

Передача массива структур в функцию не указывая размера массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ в массивах С(28) и М(12) определить количество элементов до последнего максимального http://www.cyberforum.ru/cpp-beginners/thread615032.html
в массивах С(28) и М(12) определить количество элементов до последнего максимального
C++ Подсчитать в строке, содержащей арифметическое выражение, количество используемых цифр и букв, заменить "+" на "-", подсчитать количество действий Ввести строку А с клавиатуры, содержащую арифметическое выражение. Подсчитать количество используемых цифр и букв. Заменить операцию "+" на "-". Подсчитать количество действий в выражении. http://www.cyberforum.ru/cpp-beginners/thread615026.html
C++ Удалить каждое четное слово во введенной строке
удалить каждое четное слово во введенной строке
Сдвинуть элементы массива C++
Все элементы массива Х(30) сдвинуть на n позиций влево при помощи указателей
C++ В массиве М(45) найти максимальный среди отрицательных элементов и число нулевых элементов стоящих после него http://www.cyberforum.ru/cpp-beginners/thread615014.html
В массиве М(45) найти максимальный среди отрицательных элементов и число нулевых элементов стоящих после него
C++ Создать массив из элементов другого массива, которые являются полными квадратами В массиве С(100) лежат целые числа. Сформировать новый массив В таким образом, чтобы в него вошли те элементы массива С, которые являются полными квадратами (1,4,9,16,25...) подробнее

Показать сообщение отдельно
Bogdan30637
0 / 0 / 0
Регистрация: 27.06.2012
Сообщений: 17
02.07.2012, 16:26  [ТС]     Передача массива структур в функцию не указывая размера массива
Идея отличная, но у меня в программе почему-то выдает ошибку сегментации(второй print не выдаёт):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
#define N 5
 
struct data{
    char key[50];
    char value[50];
};
 
size_t struct_count( struct data s[] ) {
    struct data *p = s;
    size_t count = 0;
    if( p != NULL) while (*p->key) {
        p++; count++;
    };
    return count;
}
 
typedef void (*td_reader)(const char[20], struct data somedata[N]);
 
int main(int argv, char* argc[]){
    if (argv!=2){
        printf("You shood enter file's name.\n");
        return 0;
    }
    void *handle=dlopen("libfilereader.so",RTLD_LAZY);
    if(handle==0){
        printf("Library didn't found.");
    }
    td_reader reader=(td_reader)dlsym(handle,"reader");
 
    struct data *somedata;
    somedata = (struct data *)malloc(100 + 1);
    memset( somedata, ' ', sizeof(struct data) * 100 );
    somedata[100].key[0] = 0;
    printf("test.count = %d\n", struct_count( somedata ));
    printf("*****************");
    (*reader)(argc[1],somedata);
    dlclose(handle);
    return 0;
}
Пробовал создать программу исключительно с вашим кодом - работает. Где напартачил понять не могу.
 
Текущее время: 10:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru