반응형
c 언어 에서 배열 중간에 값을 넣을 수 있을까?
memmove() 를 이용한다면 가능하다.
memmove(목적지,복사시작위치,복사할byte) 복사할 byte만큼 배열 뒤쪽에서 부터 복사한다.
int list로 선언했기 때문에 배열의 한자리는 4byte씩 메모리를 차지한다.
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
void Insert(int idx,int list[], int searchnum) // insert 함수를 만들어서 값을 복사한 후 뒤쪽에 붙임.
{
memmove(list + idx + 1, list + idx, sizeof(int) * (6-idx)); // memmove(목적지,복사시작위치,복사할byte)를 이용하여 이동시킨다.
list[idx] = searchnum; // 원하는 원소 값을 넣는다.
}
void main(void)
{
int list[7] = { 1,4,9,15,30,0,0 }; // list는 list[0] ~ list[6] 까지 있다.
Insert(3, list, 10); // list[3]자리에 10의 값을 넣기위해,
// list[3~6]을 memmove를 통해 복사한 후 list[4~6]에 붙여넣는다.
for (int i = 0; i < 7; i++) {
printf("%d ", list[i]); // 결과값 : 1 4 9 10 15 30 0
}
}
정확히 말하자면 원소값을 넣고싶은 배열위치 뒤쪽의 원소값들을 복사 한 후에 한칸씩 이동시켜서 붙여넣기한 것이다.
사진
반응형
'컴퓨터 언어 > C\C++' 카테고리의 다른 글
[c 언어] 구조체의 정의 & 배열과 포인터 구조체 만들기. (0) | 2020.04.04 |
---|---|
[c 언어] fputs 함수란. (0) | 2020.04.04 |
[c언어] rand(), srand() 랜덤함수는 무엇인가? (난수 생성) (0) | 2020.04.02 |
[c언어] fprintf(stderr, "error!"); 에 대하여. (0) | 2020.04.02 |
[C 언어] pointer 이용해서 함수 구현하기(pythagoras, 원의 면적) (0) | 2020.03.16 |