문자열 삭제 추가(202510043 이경훈) - aksrud/3kingOfGod GitHub Wiki

#include <stdlib.h>
#include <string.h>
#include <conio.h>

struct StringArray {
	char* s[100];
	int count;
};
void deleteSA(StringArray* psa, int index) {
	// 삭제할 문자열 임시 저장
	char temp[100];
	strcpy(temp, psa->s[index]);
	free(psa->s[index]);

	// 문자열 위치 덮어쓰기 (마지막꺼 가져다 씀)
	psa->count--;
	psa->s[index] = psa->s[psa->count];

	printf("[%d]번째 인덱스에 있는 문자열 %s를 제거하였습니다.\n", index, temp);
}
int searchSA(StringArray* psa, const char* buf) {
	for (int i = 0; i < psa->count; i++) {
		if (strcmp(buf, psa->s[i]) == 0) {
			return i;
		}
	}
	return -1;
}
void AddSA(StringArray* psa, const char* buf) {
	psa->s[psa->count] = (char*)malloc(strlen(buf) + 1);
	strcpy(psa->s[psa->count], buf);
	psa->count++;
}
void InputBuffer(char* buf, int size) {
	printf("문자열 입력 : ");
	gets_s(buf, size);
}
void PrintSA(StringArray* psa) {
	for (int i = 0; i < psa->count; i++) {
		printf("string[%d] : %s\n", i, psa->s[i]);
	}
}
void FreeSA(StringArray* psa) {
	for (int i = 0; i < psa->count; i++) {
		free(psa->s[i]);
	}
}

void PrintMenu() {
	printf("\n");
	printf("1. 문자열 입력\n");
	printf("2. 문자열 출력\n");
	printf("3. 문자열 검색\n");
	printf("4. 문자열 삭제\n");
	printf("0. 프로그램 종료\n");
	printf("\n");
}
int main() {

	StringArray sa = { 0 };
	int run = 1;
	while (run) {
		PrintMenu();
		switch (_getch()) {
			case '1': // 입력
			{
				char buf[1000];
				InputBuffer(buf, 1000);
				AddSA(&sa, buf);
				break;
			}
			case '2': // 출력
			{
				PrintSA(&sa);
				break;
			}
			case '3': // 검색
			{
				char buf[1000];
				printf("검색 ");
				InputBuffer(buf, 1000);
				int index = searchSA(&sa, buf);
				printf("찾은 문자열의 Index : %d\n", index);
				break;
			}
			case '4': // 삭제
			{
				char buf[1000];
				printf("삭제 ");
				InputBuffer(buf, 1000);
				int index = searchSA(&sa, buf);
				deleteSA(&sa, index);
				break;
			}
			case '0': // 종료
			{
				run = 0;
				break;
			}
		}
	}
	FreeSA(&sa); // 메모리 해제
	return 0;
}
⚠️ **GitHub.com Fallback** ⚠️