Trong phần này chúng ta sẽ xem mục đích của hàm memset() trong C++. Hàm này chuyển đổi giá trị ký tự thành ký tự không dấu (unsigned char) và sao chép nó vào mỗi ký tự đầu tiên n của đối tượng được trỏ bởi str[]. Nếu n lớn hơn kích thước chuỗi, hành vi không xác định.
Cú pháp của hàm memset():
void* memset(void* str, int c, size_t n);
Trong ví dụ này sẽ dùng một chuỗi, sau đó chuyển đổi từng ký tự thành ký tự khác cho đến độ dài n.
Ví dụ
#include <bits/stdc++.h>
using namespace std;
int main() {
char str[] = "Hello World";
memset(str, 'o', 6); // n = 6
cout << str;
}
Kết quả
ooooooWorld
Hàm memset() có thể dùng để thiết lập tất cả giá trị thành 0 hoặc -1. Nhưng không thể dùng các giá trị khác, vì memset() hoạt động theo từng byte.
Ví dụ
#include <bits/stdc++.h>
using namespace std;
int main() {
int array[10];
memset(array, 0, sizeof(array));
for(int i = 0; i < 10; i++) { cout << array[i] << " "; }
cout << endl;
memset(array, -1, sizeof(array));
for(int i = 0; i < 10; i++) { cout << array[i] << " "; }
cout << endl;
memset(array, 3, sizeof(array));
for(int i = 0; i < 10; i++) { cout << array[i] << " "; }
cout << endl;
}
Kết quả
0 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 50529027 50529027 50529027 50529027 50529027 50529027 50529027 50529027 50529027 50529027