Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 1420
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1157
∙ повысить рейтинг »
Micren
Статус: Бакалавр
Рейтинг: 1060
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1425
Дата выхода:22.11.2009, 14:00
Администратор рассылки:Dr_Andrew, Старший модератор
Подписчиков / экспертов:676 / 182
Вопросов / ответов:1 / 3
IRC-канал по теме:#C

Вопрос № 174304: Здравствуйте уважаемы эксперты!Помогите пожалуйста написать простую программу на языке C++ используя memset Объясните пожалуйста, каждую строчку в этой программе(какие функциию выполняет каждая строчка), какие функции выполнят memset вообщем За...



Вопрос № 174304:

Здравствуйте уважаемы эксперты!Помогите пожалуйста написать простую программу на языке C++ используя memset
Объясните пожалуйста, каждую строчку в этой программе(какие функциию выполняет каждая строчка), какие функции выполнят memset вообщем
Заранее спасибо!!!

Отправлен: 16.11.2009, 22:51
Вопрос задал: Дианов Р.З, Посетитель
Всего ответов: 3
Страница вопроса »


Отвечает Dr_Andrew, Старший модератор :
Здравствуйте, Дианов Р.З!
Прототип функции memset:

Код:

void* memset(void* ptr, int value, size_t num);


Функция memset замещает num байт в блоке памяти (буфере), на который указывает указатель ptr, на символ заполнения value, интерпретируемый как unsigned char. Классический пример работы функции memset см. в приложении. Выделяем буфер psString, содержащий строку "Almost every programmer should know memset!". Вызовом функции memset(psString, '!', 6); мы замещаем в этой строке первые 6 символов на символ заполнения "!", т.е. вместо слова Almost будут выводиться 6 восклицательных знаков.

Приложение:

Ответ отправил: Dr_Andrew, Старший модератор
Ответ отправлен: 16.11.2009, 23:12
Казахстан, Алма-Ата
Организация: Казахский научный центр карантинных и зоонозных инфекций
Адрес сайта: Медицинские программы для Linux
ICQ # 256452186

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256605 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Максим Юрьевич, 7-й класс :
    Здравствуйте, Дианов Р.З.

    Функция memset получает указатель на массив s, и его первые n байт прописывает символом с. Синтаксис: void *memset(void *s, int c, size_t n);
    Пример из стандартного Help Borland C++ 3.1:
    int main(void)

    Код:
    {
    char buffer[] = "Hello world\n"; .// Объявляется массив buffer и ему сразу присваивается значение "Hello world"
    printf("Buffer before memset: %s\n", buffer);// Вывод значения массива buffer на печать
    memset(buffer, '*', strlen(buffer) - 1); //Замена 11 первых символов массива buffer на символ '*'
    printf("Buffer after memset: %s\n", buffer);// Вывод значения массива buffer на печать
    return 0;
    }

    На выходе по лучится:
    Код:
    Hello world
    ***********

    11 символов '*' вместо предыдущего содержимого массива.
    Для примера привожу модификацию предыдущего кода - только первые 5 символов заменяются на символ '*':
    }
    На выходе получится:
    Код:
    Hello world
    ***** world
    Исправление опечатки
    -----
    ∙ Отредактировал: Dr_Andrew, Старший модератор
    ∙ Дата редактирования: 17.11.2009, 05:17 (время московское)

    Приложение:

    Ответ отправил: Максим Юрьевич, 7-й класс
    Ответ отправлен: 16.11.2009, 23:35

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256608 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Micren, Бакалавр :
    Здравствуйте, Дианов Р.З.
    Прочесть общую информацию о ф-ии memset() вы можете на http://ru.wikipedia.org/wiki/Memset
    void* memset(void* buf,int ch,size_t count)
    Функция копирует младший байт ch в первые count символов массива buf. Функция возвращает адрес массива buf.
    Пример программы. C++. Компилировал gcc.

    Код:
    // Подключаемые заголовки
    #include <iostream> // Для потокового ввода/вывода
    #include <cstring> // Для memset()

    // Это наша главная(и в данном проекте единственная) функция. С нее начинается управление
    int main ()
    {
    // Буфер для наших операций
    char buffer[]="Это наш буфер";
    // Размер нашего буффера в байтах
    size_t bufferLength=sizeof(buffer);
    // Выведем его для проверки
    std::cout<<"Наш буфер:\""<<buffer<<"\""<<std::endl;
    // Используя memset() заполним буфер чем нибудь. Например '0'. И выведем его
    std::cout<<"Теперь буфер:\""<<(char*)std::memset(buffer,'0',bufferLength-1)<<"\""<<std::endl;
    return 0;
    }

    Вывод программы:
    Код:
    Наш буфер:"Это наш буфер"
    Теперь буфер:"00000000000000000000000000"

    Ответ отправил: Micren, Бакалавр
    Ответ отправлен: 16.11.2009, 23:43

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256609 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.11 от 17.11.2009

    В избранное