7.11.2017

/*

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);

}

댓글 없음:

댓글 쓰기