Вопрос № 174304: Здравствуйте уважаемы эксперты!Помогите пожалуйста написать простую программу на языке C++ используя memset Объясните пожалуйста, каждую строчку в этой программе(какие функциию выполняет каждая строчка), какие функции выполнят memset вообщем За...
Вопрос № 174304:
Здравствуйте уважаемы эксперты!Помогите пожалуйста написать простую программу на языке C++ используя memset Объясните пожалуйста, каждую строчку в этой программе(какие функциию выполняет каждая строчка), какие функции выполнят memset вообщем Заранее спасибо!!!
Отвечает 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 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Максим Юрьевич, 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 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает 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 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.