Форум программистов, компьютерный форум, киберфорум
Наши страницы

Передача массива структур в функцию не указывая размера массива - 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

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

27.06.2012, 14:32. Просмотров 2731. Ответов 37
Метки (Все метки)

Я читаю с командной строки файл в котором содержится массив структур. Есть библиотека с функцией в которую я прередаю файл и массив структур, в который запишется содержимое файла. Вопрос: как предать этот массив не указывая его размера?

код библиотеки:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 4
 
struct data
{
    char key[50];
    char value[50];
};
void reader(const char filename[],struct data somedata[]){
    FILE* file=fopen(filename,"r");
    memset(somedata,0,(sizeof(somedata[N]))*N);
    int i=0;
    for(i=0;i<N;i++){
        fscanf(file,"%s %s",somedata[i].key,somedata[i].value);
    }
    fclose(file);
    for(i=0;i < N;i++)
    {
        puts(somedata[i].key);
        puts(somedata[i].value);
    }
}
основной код:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
#define N 4
 
struct data
{
    char key[50];
    char value[50];
} somedata[N];
 
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");
    printf("%d %d\n",sizeof(argc[1]),sizeof(&somedata[N]));
    (*reader)(argc[1],&somedata[N]);
    dlclose(handle);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.