Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
xkorp
0 / 0 / 1
Регистрация: 31.01.2014
Сообщений: 12
1

Компилятор ругается на выделение памяти malloc

31.01.2014, 21:57. Просмотров 1132. Ответов 3
Метки нет (Все метки)

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
/*
СТУДЕНТ:
 фамилия, имя, отчество (строки по 15 символов);
 номер зачетной книжки (целое шестизначное число, уникальное поле);
 дата рождения (в формате дд.мм.гггг).
*/
 
// объявляем структу СООБЩЕНИЕ
struct STUDENT {
    int ID_STD; //уникальное поле
    char FIO[15];
    char DATE[10];
} ;
 
int main(int argc, char *argv[]){
    setlocale(LC_ALL,"RU");
    int ARR_SIZE = 0; // размер массива,
    int i = 0;  //управляющая перенная цикла
    char SearchString[10]; //переменная для поиска
    struct STUDENT *d; // указатель на массив структцры
 
    printf("Введите размер: ");
    scanf("%i", &ARR_SIZE); // сохраняем в переменной введенный размер
 
    d = (struct STUDENT*)malloc(ARR_SIZE*sizeof(STUDENT)); // выделяем память для массива
    if(d == NULL)
        return -1; // если памяти нет, то выход с ошибкой
    
    printf("Введите данные о студенте:\a\n");
    for(i = 0; i < ARR_SIZE; i++){ // цикл заполнения структуры
        printf("%i:\n",i+1);
        printf("Номер зачётной книги: ");
        scanf("%d*c", &d[i].ID_STD);
        printf("ФИО: ");
        gets("%s*c", d[i].FIO);
        printf("Дата: ");
        gets("%s*c", d[i].DATE);
    }
       printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\a");
    printf("- - - - - - - - - - - - -Поиск- - - - - - - - - - - - - - \n\a");
    printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\a");
    printf("Введите номер зачётки студента для поиска:\a ");
    gets("%s", &SearchString); 
 
    for(i = 0; i < ARR_SIZE; i++){
        printf("%d\n",__LINE__);
        if  (strstr(d[i].DATE,SearchString) != NULL){ 
            printf("- - - - - - - - - - - - - - - - - - - - - - - - - ");
            printf("- - - -Результат поиска- - - - - - - \a\n");
            printf("- - - - - - - - - - - - - - - - - - - - - - - - - ");
            printf("Номер зачётной книги: %8.d\n",d[i].ID_STD);
            printf("ФИО: %s\n",d[i].FIO);
            printf("Дата: %s\n",d[i].DATE);
        }
    }
    free(d); // освобождаем память, которая была выделена под массив
    getch();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 21:57
Ответы с готовыми решениями:

Динамическое выделение памяти, нужен ли <malloc.h>?
если используешь функцию malloc, обязательно перед этим подключать соответствующую библиотеку...

Выделение памяти под структуры (malloc)
Доброго времени суток! Нужна помощь в выделении памяти для структуры с указателями. Можете...

Malloc (выделение памяти двумерному массиву) - проверить код
Здравствуйте, подскажите пожалуйста, есть ли логические ошибки в блоке &quot;Выделения памяти:&quot;? План...

Ругается компилятор на Ubuntu
Написал программу на Ubuntu, попробовал скомпилировать, но компилятор выдал ошибку. Ту же самую...

Компилятор ругается на спецификатор формата
Много разглагольствовать не стану, на скриншоте все видно. Спецификаторы для различных типов...

3
Charles Kludge
Клюг
7647 / 3162 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
31.01.2014, 22:40 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Объявите как
C
1
2
3
4
5
6
// объявляем структу СООБЩЕНИЕ
struct STUDENT {
    int ID_STD; //уникальное поле
    char FIO[15];
    char DATE[10];
} STUDENT;
1
Fonduee
Музыка нас Связала
230 / 230 / 52
Регистрация: 26.03.2008
Сообщений: 616
31.01.2014, 22:54 3
C
1
sizeof(struct STUDENT)
0
Байт
Эксперт C
20348 / 12900 / 2702
Регистрация: 24.12.2010
Сообщений: 26,964
01.02.2014, 12:29 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

xkorp, а чтоб голова не болела, напиши так
C
1
2
3
4
5
typedef struct  {
    int ID_STD; //уникальное поле
    char FIO[15];
    char DATE[10];
}  STUDENT;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2014, 12:29

Компилятор ругается на прототип функции
Добрый вечер! Не могу понять почему компилятор ругается на прототип функции. И следоваетльно на всю...

Почему компилятор ругается на то, что else относится к if?
Kомпилятор ругается на то,что else относится к if 'else' without a previous 'if' Вот собственно...

Malloc ошибка освобождения памяти
ЧЯДНТ? Косяк такой: heap corruption detected before normal block (№0) at 0x... CRT detected...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru