void MStringResize(MString_t *String, size_t Length) { /* Calculate the new byte-count we * need to encompass with blocks */ size_t DataLength = DIVUP(Length, MSTRING_BLOCK_SIZE) * MSTRING_BLOCK_SIZE; /* Expand and reset buffer */ void *Data = dsalloc(DataLength); memset(Data, 0, DataLength); /* Copy old data over */ memcpy(Data, String->Data, String->Length); /* Free the old buffer */ dsfree(String->Data); /* Update string to new buffer */ String->MaxLength = DataLength; String->Data = Data; }
int cdbc_get(CDBC *cd, char *docid) { str uri; int rc; if (!cd) return CDBC_ERROR; if (!cd->dbname) return CDBC_NODBNAME; dsinit(&uri); dscat(&uri, cd->dbname); dsadd(&uri, '/'); dscat(&uri, docid); rc = cdbc_request(cd, (char *)dsstring(&uri)); dsfree(&uri); return (rc); }
int main() { char **txt1 = NULL, **txt2 = NULL; short isprogend = 0, istxt1 = 0, istxt2 = 0, strct; SetConsoleCP(1251); SetConsoleOutputCP(1251); system("title = Курсовая работа. Обработка текста"); do { system("cls"); switch (menu()) { case '1': //ввод текста if (txt1 != NULL) txt1 = (char**)dsfree((void**)txt1, strct); if (txt2 != NULL) txt2 = (char**)(dsfree((void**)txt2, strct)); istxt1 = 1; istxt2 = 0; system("cls"); rewind(stdin); txt1 = gettxt(&strct); printf_s("\nВвод завершен!\n"); waitforenter(); break; case '2': //вывод исходного текста system("cls"); if (istxt1) { printf_s("Исходный текст:\n"); putstrings(txt1, strct); } else printf_s("Ошибка! Сначала введите исходный текст"); printf_s("\n"); waitforenter(); break; case '3': //обработка исходного текста system("cls"); if (istxt1) { if (txt2 == NULL) { istxt2 = 1; txt2 = wordproc(txt1, strct); printf_s("Текст обработан"); } else printf_s("Текст уже был обработан"); } else printf_s("Ошибка! Сначала введите исходный текст"); printf_s("\n"); waitforenter(); break; case '4': //вывод текста system("cls"); if (istxt2) { printf_s("Результирующий текст:\n"); putstrings(txt2, strct); } else printf_s("Ошибка! Сначала обработайте исходный текст"); printf_s("\n"); waitforenter(); break; case '5': //справка system("cls"); reference(); printf_s("\n"); waitforenter(); break; case '6': //выход system("cls"); printf_s("Вы уверены, что хотите выйти?(1-Да/0-Нет): "); scanf_s("%hi", &isprogend); rewind(stdin); break; default: printf_s("Ошибка! Введите существующий пункт меню\n"); waitforenter(); } } while (!isprogend); if (txt1 != NULL) txt1 = (char**)dsfree((void**)txt1, strct); if (txt1 != NULL) txt1 = (char**)dsfree((void**)txt1, strct); return 0; }