apple
appel
*/
#include<stdio.h>
#include<string.h>
// 메모리의 특정 소스를 목적 위치로 복사하며,
// 기존에 있던 데이터는 size만큼 이동
// 1. dst : 문자열이 복사될 위치
// 2. src : 복사할 문자열이 있는 위치
// 3. size : 이동할 사이즈
void insert_arr(int index, char c, char *str) {
memmove(str + index + 1, str + index, strlen(str) - index + 1);
str[index] = c;
}
void del_arr(int index, char *str) {
memmove(str+index,str+index+1,strlen(str)-index);
}
void add(char c,char *str) {
insert_arr(strlen(str),c,str);
}
void main() {
int num, input;
char c;
char str[10] = "abcde";
do {
printf("현재 문자열 : %s\n", str);
printf("1. 삽입 2. 삭제 3. 맨 뒤에 추가 0. 종료\n");
scanf("%d", &num);
switch (num) {
case 1:
printf("삽입할 위치를 입력하세요.\n");
scanf("%d", &input);
printf("삽입할 문자를 입력하세요.\n");
scanf("\n%c", &c);
insert_arr(input, c, str);
break;
case 2:
printf("삭제할 위치를 입력하세요.\n");
scanf("%d", &input);
del_arr(input, str);
break;
case 3:
printf("문자를 입력하세요.\n");
scanf("\n%c", &c);
add(c, str);
break;
default :
if (num == 0)
printf("프로그램을 종료합니다.");
else {
printf("0~3을 선택하세요.\n");
break;
}
}
} while (num);
}
==================================================================================================================
#include<stdio.h>
// {0,1,2,3,4,5,6,7,8,9} : pnum = 10, index = 4;
// {0,1,2,3,5,6,7,8,9} : pnum-id-1 = 5
int * init_arr(int *psize, int *pgrow, int *pnum, int *arr) {
arr = (int *)malloc(sizeof(int)*(*psize));
}
void view_arr(int *arr, int num);
void insert_arr(int id, int val, int *pnum, int *psize, int *pgrow, int *arr);
void del_arr(int id, int *arr, int *pnum) {
memmove(arr+id,arr+id+1,sizeof(int)*(*pnum-id-1));
}
void add_arr(int val, int *pnum, int *psize, int *pgrow, int *arr);
void main() {
int *arr = NULL;
int size = 10; // 할당된 배열의 크기
int num = 0; // 실제 저장된 값의 개수
int grow = 5; // 재할당될 경우 여유 배열 크기 정보 보관
arr = init_arr(&size, &grow, &num, arr);
}
댓글 없음:
댓글 쓰기