3 / 3 / 0
Регистрация: 02.01.2013
Сообщений: 116
1

Strcpy обход дерева

27.05.2014, 22:32. Показов 480. Ответов 2
Метки нет (Все метки)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
void write_tree_to_file(node_id* tree_id, FILE* fp) {
 
    if (tree_id) {
        char line[50];
        char numb[20];
        strcpy(line,tree_id->name);
        strcpy(line,",");
        sprintf(numb, "%d", tree_id->id);
        printf("%s\n", line);
      print_preorder_id(tree_id->left);
      print_preorder_id(tree_id->right);
    }
}
не пойму почему, но когда вызывается strcpy для первого вузла дерева (strcpy(line,tree_id->name);, то ничего не копируется в line.
работает только эта функция: strcpy(line,",");
тоест в line у нас только ','
для следующих узлов все работает
не пойму как исправить.
в узле точно есть инфа.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2014, 22:32
Ответы с готовыми решениями:

Обход бинарного дерева в ширину
Честное слово, облазил весь интернет и не нашел не одной реально рабочей программы. Сама задача...

Как работает обход дерева
Допустим есть дерево с корнем 1. Левый лист 2, тоже имеющий левый лист 4. У корня есть правый лист...

Выполнить обход бинарного дерева в прямом порядке
Построить бинарное дерево одного из типов данных: вещественного. Выполнить обход дерева ...

ошибка в strcpy
я переводил программу с другого языка программирования на С-язык. Там была функция substr. substr...

2
502 bad gateway
Эксперт PHP
4608 / 3748 / 1565
Регистрация: 24.04.2014
Сообщений: 10,984
27.05.2014, 22:39 2
Pein95, второй вызов strcpy копирует поверх первого, попробуй во втором вызове line заменить на line+strlen(tree_id->name)
0
3 / 3 / 0
Регистрация: 02.01.2013
Сообщений: 116
27.05.2014, 23:00  [ТС] 3
спасибо работает.
Но есть ещо одна проблема)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void write_tree_to_file(node_id* tree_id, FILE* fp) {
    if (fp == NULL) {
        printf("Error file\n");
        return;
    }
    char line[60];
    char numb[20];
    if (tree_id) {
 
        sprintf(numb, "%d", tree_id->id);
        strcpy(line, tree_id->name);
        strcpy(line+strlen(tree_id->name), ",");
        strcpy(line+strlen(line), numb);
        strcat(line, "\n");
        printf("%s", line);
        fputs(line, fp);
        write_tree_to_file(tree_id->left, fp);
        write_tree_to_file(tree_id->right, fp);
     }
    close(fp);
}
не пишет в файл почему то(
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2014, 23:00

Функция strcpy
Почему-то разработчиками была создана функция не типа void а сhar * strcpy(char *dest, char *src)...

Ошибка с strcpy
В данном коде в функции findNearEquals вылетает ошибка доступа к памяти, помогите найти её Вот...

Не работает strcpy()
Нужно вывести строку "Hello, World!" из строки "pt Hello, World!;": #include <stdio.h> #include...

Падает программа с strcpy
Не могу понять, почему вылетает программа. Через malloc память для *p выделять пробовал, все равно...


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

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

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