Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> срочно нужно написать функцию 
:(
    Опции темы
adLucem
Дата 25.5.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5



Код

#include <malloc.h>
#include <stdio.h>

#define BUFFER_SIZE 100

void main ( ) {
    // Выделяем память для буфера, в которм будет храниться строка.
    char* buffer = ( char* ) malloc ( sizeof ( char ) * BUFFER_SIZE );
    // Устанавливаем указатель для начала записи данных в буфер.
    // Так как при записи мы используем пре-инкремент запись начнется с первого символа буфера.
    char* src = buffer - 1;
    // Посимвольно считываем вводимые данные.
    // Условиями завершения является:
    //  - достижение половины заданного размера буфера, так буфер должен дублироваться и не следует допускать переполнения.
    //  - нажатием пользователем клавиши Enter, которая считается терминальным (завершающим) символом при вводе строки.
    while ( ( ++src < buffer + BUFFER_SIZE / 2 - 1 ) 
        && ( (*src = getchar ( ) ) != 0xA ) );
    // Ставим в конце строки нулевой символ, чтобы получить строку в С-стиле.
    *src = 0;
    // src указывает на последний символ строки, buffer - на первый символ, копируем из начала в конец, пока не достигнем нуля.
    // Копирование начинается со второго символа, чтобы не затереть нуль (последний символ) в конце и не получить вечный цикл.
    while ( ( *++src = *++buffer ) );
    // src указывает на последний символ продублированной строки, buffer - на первый символ продублированной строки (который в данный момент равен нулю), копируем из начала в конец, пока не достигнем нуля.
    // Копируем пропущенный первый символ.
    *buffer = * ( buffer - ( src - buffer ) );
    // Устанавливаем указатель buffer на начало строки.
    buffer = buffer - ( src - buffer );
    // Выводим строку на экран.
    printf ( "%s", buffer);
    // Очищаем память, выделенную для буфера.
    free ( buffer );
}


Это сообщение отредактировал(а) adLucem - 25.5.2007, 15:53
PM MAIL ICQ   Вверх
adLucem
Дата 25.5.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5



W4FhLF
Цитата(W4FhLF @  8.5.2007,  14:57 Найти цитируемый пост)
Конечно, 1 переменная.


Не зачтено - речь шла о С/С++, а не об ассемблере.
PM MAIL ICQ   Вверх
W4FhLF
Дата 26.5.2007, 05:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Цитата(adLucem @  25.5.2007,  16:23 Найти цитируемый пост)
Не зачтено - речь шла о С/С++, а не об ассемблере.


Конструкция __asm {} является частью языка, поэтому всё в пределах допустимого, никаких доп. средств и извращений я не использовал. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.