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 <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;
}
[/code]
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;
}
[/code]
strA :
********** minh hoang blog!
********** minh hoang blog!
********** minh hoang blog!
bufA :
AB777FGHIJK
AB777FGHIJK
AB777FGHIJK