Lập trình C/C++

Hàm wmemset() trong C/C++

Hàm wmemset() trong C/C++
Được viết bởi Minh Hoàng

Series lập trình C/C++, ngôn ngữ lập trình hệ thống mạnh mẽ.

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
[code language=”c” highlight=”8,20″] #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;
}
[/code]

[code language=”c” highlight=”8,20″] #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;
}
[/code]

Output:

strA :
********** minh hoang blog!
********** minh hoang blog!
********** minh hoang blog!
bufA :
AB777FGHIJK
AB777FGHIJK
AB777FGHIJK

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

Translate »