반응형
// 문자열 복사
// 문자열 삽입
// 문자열 연결
#include <stdio.h>
#include <string.h>
int main()
{
char s1[]="abcdefgh"; // *s1 하면 에러
char s2[]="alphabetagama"; // *s2 해도 가능하다.
strncpy(s1, s2, strlen(s1)); // s2 문자열을 s1에 복사한다. s1의 길이만큼 복사.
printf("%s", s1); // 만약 s2가 s1에 복사할때 s2의 길이가 s1의 길이를 초과해서
// 복사하면 에러가 생긴다.
return 0;
}
// 문자열 대체 memmove() or memcpy() 함수
#include <stdio.h>
#include <string.h>
int main()
{
char s1[]="abcdefg";
char s2[]="012";
memmove(s1+3, s2, strlen(s2)); // s2의 길이만큼 s1 0자리에서 3만큼 떨어진 부분부터 s2로 대체한다.
printf("%s", s1); // s2의 길이가 s1 이상을 찾지할 경우 에러 발생return 0; // memmove대신 memcpy를 써도 매개변수가 같아 상관없다.
return 0;
}
// 문자열 삽입
#include <stdio.h>
#include <string.h>
void insert(char *m ,char *s, int n);
int main()
{
char s1[20]="abcdefg";
char *s2="012";
insert(s1, s2, 3);
printf("%s", s1);
return 0;
}
void insert (char *m, char *s, int n)
{
memmove(m+n, m, strlen(m));
memmove(m+n, s, strlen(s));
}
// 문자열 연결
#include <stdio.h>
#include <string.h>
void insert(char *m ,char *s, int n);
int main()
{
char s1[20]="abcde"; // s1에 s2를 연결하려면 s1이 s2를 합친 길이만큼의 배열의 길이가 있어야 한다.
char s2[]="fghijk"; // s1의 길이가 짧다면 에러가 난다. 마지막 null이 들어가야 하는것도 고려해야 한다.
strcat(s1, s2);
printf("%s\n", s1);
strncat(s1, s2, 1); // strncat는 매개변수가 하나 더 있다. 마지막의 매개변수는 src부분에서 연결할 개수를 지정한다.
printf("%s", s1);
return 0;
}
반응형
'System Programmings > C' 카테고리의 다른 글
[C] 절대값 및 부호 바꾸기 (abs(), lasb(), fabs()) (0) | 2010.08.07 |
---|---|
[C] 문자열 비교 & 검색 (strcmp(), strncmp(), strstr(), strpbrk(), strspn(), strcspn()) (0) | 2010.08.07 |
[C] 문자열 -> 숫자 / 숫자 -> 문자열 (atoi(), atof(), strtod(), strtol(), strtoul()) (0) | 2010.08.06 |
[C] 문자열 역순으로 바꿔저장하기 (한/영) (0) | 2010.08.06 |
[C] 문자열 역순으로 출력하기 (한/영 재귀함수 포함) (0) | 2010.08.06 |