문자열 위에 문자열을 겹쳐 값을 출력하는 코드다.
변경할 문자열 my_string, 겹치게 할 문자열 overwrite_string, 겹치는 시작 위치 s 이렇게 3개의 인자를 받는다.
char* solution(const char* my_string, const char* overwrite_string, int s) {
strlen()을 사용하여 my_string의 문자열 길이와 overwrite_string 의 길이를 구한다.
size_t my_string_length = strlen(my_string);
size_t overwrite_length = strlen(overwrite_string);
문자열의 끝인 null을 고려해 1을 더해주며 메모리를 할당한다.
char* answer = (char*)malloc((my_string_length + 1) * sizeof(char));
문자열을 복사하는 strcpy() 함수를 사용해 my_string에 저장되어있는 문자열을 answer에 복사한다.
strcpy(answer, my_string);
answer의 s 위치부터 overwrite_string을 overwrite_length만큼 복사하여 덮어준다.
strncpy(answer + s, overwrite_string, overwrite_length);
return answer;
}
int main() {
const int MAX_LENGTH = 1000;
char* my_string = (char*)malloc(MAX_LENGTH * sizeof(char));
char* overwrite_string = (char*)malloc(MAX_LENGTH * sizeof(char));
int s;
scanf("%s %s %d", my_string, overwrite_string, &s);
char* result = solution(my_string, overwrite_string, s);
printf("%s\n", result);
return 0;
}
전체 코드는 다음과 같다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
char* solution(const char* my_string, const char* overwrite_string, int s) {
size_t my_string_length = strlen(my_string);
size_t overwrite_length = strlen(overwrite_string);
char* answer = (char*)malloc((my_string_length + 1) * sizeof(char));
strcpy(answer, my_string);
strncpy(answer + s, overwrite_string, overwrite_length);
return answer;
}
int main() {
const int MAX_LENGTH = 1000;
char* my_string = (char*)malloc(MAX_LENGTH * sizeof(char));
char* overwrite_string = (char*)malloc(MAX_LENGTH * sizeof(char));
int s;
scanf("%s %s %d", my_string, overwrite_string, &s);
char* result = solution(my_string, overwrite_string, s);
printf("%s\n", result);
return 0;
}'Coding Test' 카테고리의 다른 글
| 두 수의 나눗셈 (0) | 2024.06.05 |
|---|---|
| 각도기 (0) | 2024.06.02 |
| 문자열 돌리기 (0) | 2024.05.24 |
| 특수문자 출력하기 (0) | 2024.05.23 |
| tolower(), toupper() 대소문자 변환 문제 (0) | 2024.05.22 |