Trong bài viết này sẽ giới thiệu ý nghĩa và cách sử dụng của hàm wmemset()
Cú pháp:
wchar_t* wmemset ( wchar_t *ptr, wchar_t value, size_t num );
Trong đó:
- ptr:là một con trỏ có kiểu wchar_t trỏ tới địa chỉ bắt đầu của vùng nhớ (the block of memory) sẽ được fill giá trị value.
- value:là một ký tự dùng để fill vào vùng nhớ.
- num:số byte(s) của vùng nhớ sẽ được fill giá trị value.
Hàm này sẽ trả về một con trỏ ptr kiểu wchar_t.
Ý nghĩa:
– Hàm wmemset() sẽ set num byte(s) đầu tiên của vùng nhớ tính từ vị trí do con trỏ ptr trỏ tới bằng giá trị value.
– Thường được sử dụng để khởi tạo giá trị của một biến mảng chuỗi (array) về giá trị mặc định như L’\0′ đối với giá trị của wchar_t.
Ví dụ:
Sử dụng hàm wmemset() để khởi tạo giá trị mặc định cho biến
#include <stdio.h> #include <wchar.h> // Khai báo để sử dụng được hàm wmemset int main() { /********************************/ /* Khai báo biến mảng chuỗi */ /********************************/ wchar_t nameA[32]; /*==========================================================*/ /* Khởi tạo giá trị cho biến mảng */ /* Có thể khởi tạo giá trị cho toàn kích thước của mảng */ /* hoặc khởi tạo giá trị theo số phần tử của mảng */ /* Do đó, có thể sử dụng 1 trong 4 cách sau: */ /*==========================================================*/ wmemset( nameA, L'\0', sizeof( nameA ) ); wmemset( nameA, L'\0', sizeof( wchar_t )*32); wmemset( nameA, L'\0', sizeof( nameA ) / sizeof( nameA[0] ) ); wmemset( nameA, L'\0', sizeof( nameA ) / sizeof( *(nameA) ) ); return 0; }
Sử dụng hàm wmemset() để set giá trị bất kỳ cho biến mảng
#include <stdio.h> #include <wchar.h> int main() { // Thay thế 10 giá trị ban đầu của mảng bằng ký tự * wchar_t strA[] = L"welcome to minh hoang blog!"; wmemset( strA, L'*', 10 ); wprintf( L"strA:\n%ls\n", strA ); _putws( strA ); for( int ii=0; ii<wcslen( strA ); ii++ ) putwchar( strA[ii] ); wprintf( L"\n" ); // Thay thế 3 giá trị của mảng tính từ vị trí thứ 2 bằng ký tự 7 wchar_t bufA[] = L"ABCDEFGHIJK"; wmemset( bufA + 2, L'7', 3 ); wprintf( L"buf:\n%ls\n", bufA ); _putws( bufA ); for( int ii=0; ii<wcslen( bufA ); ii++ ) putwchar( bufA[ii] ); getchar(); return 0; }
#include <iostream> using namespace std; int main() { // Thay thế 10 giá trị ban đầu của mảng bằng ký tự * wchar_t strA[] = L"welcome to minh hoang blog!"; wmemset( strA, L'*', 10 ); wcout << "strA : " << endl << strA << endl; _putws( strA ); for( int ii=0; ii<wcslen( strA ); ii++ ) putwchar( strA[ii] ); wcout << endl; // Thay thế 3 giá trị của mảng tính từ vị trí thứ 2 bằng ký tự 7 wchar_t bufA[] = L"ABCDEFGHIJK"; wmemset( bufA + 2, L'7', 3 ); wcout << "bufA : " << endl << bufA << endl; _putws( bufA ); for( int ii=0; ii<wcslen( bufA ); ii++ ) putwchar( bufA[ii] ); system("pause"); return 0; }
strA :
********** minh hoang blog!
********** minh hoang blog!
********** minh hoang blog!
bufA :
AB777FGHIJK
AB777FGHIJK
AB777FGHIJK