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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
blohamen
0 / 0 / 0
Регистрация: 29.04.2015
Сообщений: 16
#1

Ошибка 0xcdcdcdcd при считывании fscanf-ом из файла в указатель - C++

13.05.2017, 20:48. Просмотров 161. Ответов 2

Ошибка заключается в том, что при выделении памяти на указатель он каким-то боком не заполняется fscanf-ом из файла.
Постоянно появляется ошибка 0xcdcdcdcd. Читал, что это проблема из-за не инициализации указателя, но как его инициализировать? пробовал memset не получается
Файл с полным кодом прикрепил. Помогите пожалуйста!
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
//структура для хранения данных о пропорциях игрушек
struct razmer
{
    float dlina;      //длина
    float ves;      //вес
};
 
//структура данных для хранения информации о производителе
struct proizvoditel
{
    char nazvanie_companii[50];      //название компании
    int nomer_companii;           //телефонный номер компании
    char strana[50];        //страна, в которой находится компания-производитель
    int kod_strany;         //код страны
};
 
//главная структура программы(данные об игрушках)
typedef struct toys
{
    char naimenovanie[50];           //наименование игрушки
    int nomer;              //номер игрушки
    float stoimost;         //стоимость игрушки
    struct razmer proportion;      //размеры игрушки
    struct material materialy;     //материал
    struct proizvoditel company;   //производитель
    int kategoria_vozrast;   //возрастная категория
    struct toys *prev, *next;
}toys;
 
int file_read(toys**begin, toys**end)
{
    int i = 0;
    toys *p = NULL;
    int w = 0;
    if (!(data1 = fopen("dannye.txt", "r+"))){
        return 1;
    }
    else {
        rewind(data1);
        while (!feof(data1)) {
            p = (toys*)malloc(sizeof(toys));
        fscanf_s(data1, "%s  %d  %.2f  %.2f  %.2f  %s  %d  %s  %d  %s  %d  %d\n", p->naimenovanie, p->nomer, p->stoimost, p->proportion.dlina, p->proportion.ves, p->materialy.nazvanie_materiala, p->materialy.kod_materiala,
                p->company.nazvanie_companii, p->company.nomer_companii, p->company.strana, p->company.kod_strany, p->kategoria_vozrast);
            if (w == 0) {
                p->prev = p->next = NULL;
                (*begin) = (*end) = p;
                w++;
            }
            if (w == 1) {
                p->next = NULL;
                p->prev = *end;
                (*end)->next = p;
                *end = p;
            }
        }
        read++;
    }
    fclose(data1);
    return 0;
}
ConsoleApplication2.zip
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2017, 20:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка 0xcdcdcdcd при считывании fscanf-ом из файла в указатель (C++):

Сбивается указатель при считывании из файла - C++
Сбивается указатель, считывается не то значение (вместо '1' считывается пробел и всё летит). Но если открыть этот файл в WordPad'e добавить...

Ошибка при считывании двоичного файла - C++
При считывании из .EXE файла возникает ошибка, а возникает она когда считываемый байт равен 0x1A. Если он есть в файле то программа "видит"...

Ошибка, при считывании инфы с файла... - C++
Вот есть код:#include <iostream.h> #include <conio.h> #include <string.h> #include <fstream.h> #include <stdio.h> #include...

Ошибка при Считывании из файла форм-приложением - C++
Создаю приложение с формами на С++, одна из необходимых функций - считывание информации (точек графика) из файла, однако на команду: ...

указатель стал 0xCDCDCDCD - C++
Ошибка пишет current стал равным 0xCDCDCDCD в чем проблема? мне кажется в операции присваивания #include <iostream> using...

Возникает ошибка при использовании fscanf - C++
Здраствуйте. Возникла такая проблема что при попытке что-то сделать с временной строкой 'с' выдается виндовская ошибка что пямать не может...

2
GoldenId
89 / 130 / 32
Регистрация: 11.11.2010
Сообщений: 770
Записей в блоге: 14
Завершенные тесты: 1
13.05.2017, 21:11 #2
Эти функции принимают аргументы по значению. Чтобы записать единичные переменные, нужно передавать их адреса:
C++
1
        fscanf_s(data1, "%s  %d  %.2f  %.2f  %.2f  %s  %d  %s  %d  %s  %d  %d\n", p->naimenovanie, &p->nomer, &p->stoimost, ...);
0
blohamen
0 / 0 / 0
Регистрация: 29.04.2015
Сообщений: 16
13.05.2017, 21:28  [ТС] #3
Спасибо, не заметил. Но проблема все равно осталась
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2017, 21:28
Привет! Вот еще темы с ответами:

Проблема при считывании из файла - C++
Пишу простенькую программу по криптографии. В результате шифрования получается txt файлик с набором закорючек(он во вложении). Для...

Переполнение при считывании из файла - C++
Подскажите пожалуйста, где ошибка, вот код чтения из файла: void read_file(void) { int mass; FILE* file = fopen("arr.txt", "r"); ...

Ошибка при считывании xml - C++
День добрый! Код: #include <iostream> #include "conio.h" #include "tinyxml.h" #include...

Переполнение строки при считывании из файла - C++
Считываю я строки из файла, в котором их 500 тысяч. Если строка начинается на R, то я записываю её в другой файл. Примерно на 312000-й...


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

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

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