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
