Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2014, 17:24   #1
dreamboy
Пользователь
 
Регистрация: 27.02.2014
Сообщений: 12
По умолчанию Можно ли заменить calloc на malloc

Можно ли реализовать подсчет длины строки без применения strlen, то есть без библиотеки string.h, а используя только функции библиотек stdio.h и stdlib.h?
Можно ли заменить calloc на malloc не испортив программу.
Ехав на поезде девочка заменила в названии поезда каждую букву ее номером в русском алфавите и получила запись из единиц и двоек "211221-21221".Определить откуда и куда едет поезд?
Код:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <windows.h>
 
char *Rulett = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
 
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
 
void backTrack(char *Inp, char *Out)
{
    int li,lo,k,p;
    char *O1,*O2;
 
    li=strlen(Inp);
 
    if (li==0) 
    {
        printf("%s\n",Rus(Out));
        return;
    }
 
    lo=strlen(Out);
 
    O1=(char *) calloc((lo+2),1);
    strcpy(O1,Out);
 
    k=(Inp[0]-'0')-1;
    O1[lo]=Rulett[k];
 
    backTrack(Inp+1,O1);
    free(O1);
 
    if (li >= 2)
    {
        k=(Inp[0]-'0')*10+(Inp[1]-'0')-1;
 
        O2=(char *) calloc(lo+2,1);
        strcpy(O2,Out);
        O2[lo]=Rulett[k];
 
        backTrack(Inp+2,O2);
        free(O2);
    }
 
}
 
int main(int argc, char* argv[])
{
    char *Start;
    char *S1="211221";
    char *S2="21221";
 
    Start=(char *) calloc(1,1);
    Start[0]=0;
 
    backTrack(S1,Start);
    free(Start);
    
    Start=(char *) calloc(1,1);
    Start[0]=0;
 
    backTrack(S2,Start);
    free(Start);
    return 0;
}
dreamboy вне форума Ответить с цитированием
Старый 02.05.2014, 19:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Насколько я помню основное отличие calloc() от malloc() это то что после распределения памяти calloc() заполняет ее нулями. malloc() этого не делает.
По идее твоя программа не должна пасть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли заменить оператор jz на je *Fantom* Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 14.06.2013 02:54
заменить код на malloc() Андрей frost Общие вопросы C/C++ 3 17.05.2012 08:39
malloc & calloc dn.xmk Общие вопросы C/C++ 12 25.01.2011 18:24
В чем разница между malloc и calloc ? alexobenikov Общие вопросы C/C++ 5 10.02.2010 22:01
Чем можно заменить объект BitBtn? frai Компоненты Delphi 3 14.04.2007 12:42