본 실습은 Do it C언어 입문 실습 예제를 참조하여 만들었습니다.
#include <stdio.h>
#include <string.h> // strcpy, strcat 함수 사용하기 위한 문자열 헤더파일
int main()
{
char data[10] = {'H', 'e', 'l', 'l', 'o', 0,};
char result[12];
strcpy(result, data);
strcat(result, " world");
printf("%s\n", result);
return 0;
}
- data 문자열 배열을 통해 7개의 문자열 H, e, l, l, o, 0 저장
- Hello world 문자열 전체를 저장하기 위한 새로운 문자열 배열 result 선언
- strcpy 함수를 사용하여 data 배열에 저장되어 있는 문자열 배열을 result 배열에 복사
- strcat 함수를 사용하여 result 배열에 " world" 문자열을 합침
- 문자열을 출력하는 형식 ["%s" -> string 문자열 형태의 데이터 저장]을 사용하여 Hello world 문자열 출력
#include <stdio.h>
// 문자열 복사 함수
// 매개 변수를 포인터 변수로 설정
// 받는 값은 빈 문자열 배열(result[12]), Hello 문자열이 저장되어 있는 배열(data[10])
// char 배열이기 때문에 반환형은 char* 로 정의
char *string_copy(char *s1, char *s2){
// s2 배열이 null값을 만나기 전까지 계속 반복
while(*s2 != 0){
// s2에 들어 있는 문자들을 s1으로 대입
*s1 = *s2;
// s1, s2의 주소들을 순차적으로 증가시키면서 문자 값들을 대입시킴
s1++;
s2++;
}
// s1 배열이 null을 만났을 경우 복사된 문자열 배열을 반환함
*s1 = 0;
return s1;
}
// 문자열 합침 함수
// 매개 변수를 포인터 변수로 설정
// 받는 값은 Hello 문자열 배열, " world"문자를 저장할 배열
// char 배열이기 때문에 반환형은 char* 로 정의
char *string_concat(char *s1, const char *s2){
// Hello 문자열 배열을 null 만나기 전까지 데이터 저장
while(*s1 != 0){
s1++;
}
// " world" 문자가 null을 만나기 전까지 순차적으로 기존의 문자열 배열에 데이터 저장
while(*s2 != 0){
// world를 저장할 문자열 배열의 문자들을 hello 문자열 배열에 저장
*s1 = *s2;
// 순차적으로 s1, s2의 주소드르을 증가시키면서 문자 값 대입
s2++;
s1++;
}
// s1 배열이 null인 경우 합쳐진 문자열 배열 반환
*s1 = 0;
return s1;
}
int main(){
char data[10] = {'H','e','l','l','o',0, };
char result[12];
// string_copy함수 호출
string_copy(result, data);
// string_concat함수 호출
string_concat(result, " world");
printf("%s\n", result);
return 0;
}
#include <stdio.h>
// 문자열 복사 함수
// 매개 변수를 배열로 설정
// 받는 값은 빈 문자열 배열(result[12]), Hello 문자열이 저장되어 있는 배열(data[10])
char *string_copy(char dest[], char start[]){
// 인덱스 초기화
int i = 0;
// Hello 문자열 배열의 요소에 순차적으로 접근할 때 null 만나기 전까지 반복
while(start[i] != '\0'){
// data배열의 문자 데이터들을 result배열에 대입
dest[i] = start[i];
// 인덱스 증가
++i;
}
// result 문자 배열이 NULL인 경우 result 배열 반환
dest[i] = '\0';
return dest;
}
// 문자열 합침 함수
// 매개 변수를 포인터 변수로 설정
// 받는 값은 result 문자열 배열, " world" 문자열
// char 배열이기 때문에 반환형은 char* 로 정의(시작 주소부터 데이터 값 순차적으로 저장)
char *string_concat(char dest[], const char start[]){
int i=0, j=0;
// result 배열이 null 값을 만나기전까지 문자열 순차적으로 저장
while(dest[i] != '\0'){
++i;
}
// " world" 문자열을 대입 시 null 나오기 전까지 순차적으로 저장
while(start[j] != '\0'){
// world 문자를 result 문자열 배열에 대입
dest[i] = start[j];
// 각각의 인덱스 증가
++i;
++j;
}
// result 배열이 null 값을 만난 경우 result 배열 반환
dest[i] = '\0';
return dest;
}
int main(){
char data[10] = {'H', 'e', 'l', 'l', 'o', 0};
char result[12];
string_copy(result, data);
string_concat(result, " world");
printf("%s\n", result);
return 0;
}
// strcpy
char *strcpy(
// 대상 문자열
char *strDestination,
// Null 종료 소스 문자열
const char *strSource
);
// strcat
char *strcat(
// 대상 문자열
char *strDestination,
// Null 종료 소스 문자열
const char *strSource
);
해당 코드는 strcpy, strcat에 해당된 Window 공식 문서에서 따온 코드로 위에 작성된 코드처럼 대상 문자열 배열과 복사할 문자열 배열을 입력받아 출력하는 것을 알 수 있다.