반응형
c언어 동적할당 - 문자열 - 문자열 길이, 문자열의 문자 반환, 문자열에 문자 입력
문자열 길이
void stringCopy(char *str1, char *str2) {
int len = stringLength(str2);
for (int i = 0; i < len; i++) str1[i] = str2[i];
str1[len] = '\0';
}
|
문자열의 문자 얻기
// 문자배열의 문자
char get(text *t, int i) {
return t->content[i];
}
|
문자열에 문자 입력/대체
// 문자열에 문자
void set(text *t, int i, char c) {
t->content[i] = c;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
struct text {
int capacity;
char *content;
};
typedef struct text text;
int stringLength(char *str) {
int len = 0;
for (int i = 0; str[i] != '\0'; i++) len++;
return len;
}
void stringCopy(char *str1, char *str2) {
int len = stringLength(str2);
for (int i = 0; i < len; i++) str1[i] = str2[i];
str1[len] = '\0';
}
text *newText(char *str) {
text *t = malloc(sizeof(text));
t->capacity = 24;
while(stringLength(str) + 1 > t->capacity) t->capacity *= 2;
t->content = malloc(t->capacity);
stringCopy(t->content, str);
return t;
}
void freeText(text *t) {
free(t->content);
free(t);
}
char get(text *t, int i) {
return t->content[i];
}
void set(text *t, int i, char c) {
t->content[i] = c;
}
int main() {
// text 구조체 생성
text *t = newText("Hello World!");
// 문자열 길이
int len = stringLength(t->content);
if (len == 12) printf("length of '%s': %d\n", t->content, len);
// 문자열의 문자 반환
for (int i = 0; i < stringLength(t->content); i++) printf("%c", get(t, i));
printf("\n");
// 문자열에 문자 입력
set(t, 6, 'J');
set(t, 7, 'u');
set(t, 8, 'm');
set(t, 9, 'b');
set(t, 10, 'o');
printf("%s\n", t->content);
// 메모리 할당 해제
freeText(t);
return 0;
}
|
반응형
'C 언어 > C언어 기초' 카테고리의 다른 글
[C언어 #66] 동적할당 - 문자열 - 비교, 포함여부 판단 (0) | 2020.09.12 |
---|---|
[C언어 #65] 동적할당 - 문자열 - 합치기/이어붙이기, 자르기 (0) | 2020.09.12 |
[C언어 #63] 동적할당 - 문자열 - 문자열 생성 (0) | 2020.09.11 |
[C언어 #62] 연결 리스트 (Linked lists) - 스택 (stack) 구현 - 오름차순 정렬/삽입 (0) | 2020.08.27 |
[C언어 #61] 연결 리스트 (Linked lists) - 스택 (stack) 구현 - 내림차순 정렬/삽입 (0) | 2020.08.24 |