logo

C의 memset()(예제 포함)

멤셋() 특정 값으로 메모리 블록을 채우는 데 사용됩니다.
memset() 함수의 구문은 다음과 같습니다.

 // ptr ==>채워질 메모리의 시작 주소 // x ==> 채워질 값 // n ==> 채워질 바이트 수 // 채워질 ptr부터 시작하여 void *memset(void *ptr, int x, size_t n );>

ptr은 void 포인터이므로 이 함수에 모든 유형의 포인터를 전달할 수 있습니다.



memset() 함수가 사용되는 방법을 보여주기 위해 C의 간단한 예를 살펴보겠습니다.






자바에서 던지기



// C program to demonstrate working of memset()> #include> #include> > int> main()> {> >char> str[50] =>'GeeksForGeeks is for programming geeks.'>;> >printf>(>' Before memset(): %s '>, str);> > >// Fill 8 characters starting from str[13] with '.'> >memset>(str + 13,>'.'>, 8*>sizeof>(>char>));> > >printf>(>'After memset(): %s'>, str);> >return> 0;> }>

>

>

산출:

 Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.>

설명: (str + 13)은 문자열의 첫 번째 공백(0 기반 인덱스)을 가리킵니다. GeeksForGeeks는 프로그래밍 괴짜를 위한 것이며, memset()은 문자열의 첫 번째 ''부터 시작하는 문자 '.'를 주어진 문자열의 최대 8자 위치까지 설정합니다. 문자열이므로 위와 같은 출력을 얻습니다.




// C program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; i printf('%d ', arr[i]); } int main() { int n = 10; int arr[n]; // Fill whole array with 0. memset(arr, 0, n*sizeof(arr[0])); printf('Array after memset() '); printArray(arr, n); return 0; }>

>

>

산출:

 0 0 0 0 0 0 0 0 0 0>


운동 :

아래 프로그램의 출력을 예측해 보세요.




// C program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; i printf('%d ', arr[i]); } int main() { int n = 10; int arr[n]; // Fill whole array with 100. memset(arr, 10, n*sizeof(arr[0])); printf('Array after memset() '); printArray(arr, n); return 0; }>

>

>

memset은 문자 단위로 작동하고 정수에는 1바이트(또는 문자) 이상이 포함되므로 위 코드는 배열 값을 10으로 설정하지 않습니다.

문자열.replaceall 자바

그러나 10을 -1로 바꾸면 -1 값을 얻게 됩니다. -1의 표현에는 char와 int의 경우 모두 1이 포함되어 있기 때문입니다.

참조: memset 매뉴얼 페이지(리눅스)