More actions
imported>박인서 No edit summary |
(Repair batch-0005 pages from live compare) |
||
| (9 intermediate revisions by 3 users not shown) | |||
| Line 3: | Line 3: | ||
= 참여자 명단 = | = 참여자 명단 = | ||
{| class="wikitable" | {| class="wikitable" style="width:100%;" | ||
|- | |- | ||
| 의사 | | 의사 | ||
| Line 43: | Line 43: | ||
** Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획. | ** Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획. | ||
* 뭔가 내용을 받아들인다기보다 그냥 점점 머리가 아파지는 기분이에요. 더 열심히 해야하는데 하.... - [[천준현]] | |||
* | *살려주세요, 레알. - [[최지혁]] | ||
* ~~이 정도면 쉬어가는 타임인가~~ 2시간 같은 1시간 이었지만 전 시간에 비하면 쉬어가는 타임이네요.. 음 역시 포인터는 어려웠군요.. 이전까지의 내용을 복습하는데에 중점을 두고 복습하겠습니다. - [[박인서]] | * ~~이 정도면 쉬어가는 타임인가~~ 2시간 같은 1시간 이었지만 전 시간에 비하면 쉬어가는 타임이네요.. 음 역시 포인터는 어려웠군요.. 이전까지의 내용을 복습하는데에 중점을 두고 복습하겠습니다. - [[박인서]] | ||
---- | ---- | ||
| Line 52: | Line 52: | ||
== 천준현 == | == 천준현 == | ||
문자열(string) | |||
char* str = "cream"; | |||
*str 은 c | |||
*(str+i) 로 | |||
문자열 마지막엔 무조건 null 문자, 공간을 무조건 하나 더 차지함.. | |||
char c = '\0' | |||
널문자 | |||
%s | |||
null문자를 만날때까지 출력 | |||
char str[10]; | |||
str[0] = 'c' | |||
1 = 'h' | |||
2 = 'o' | |||
3 = 'o' | |||
4 = '\0' | |||
#include <stdio.h> | |||
#pragma warning (disable : 4996) | |||
#include <malloc.h> | |||
int strlen(char*s){ //길이 재기 | |||
int res = 0; | |||
for (; *s != '\0'; s++) res++; | |||
return res; | |||
} | |||
int strcmp(char *s, char *d){ //일치비교 | |||
for (; *s != '\0'; s++, d++) | |||
if (*s != *d) return 0; | |||
if (*d == '\0') return 1; | |||
return 0; | |||
} | |||
void strtoupper(char *str){ // 소문자를 대문자로 " ", ' ' 는 쓸 수 없다. 대입을 할 수 없기 때문 | |||
for (; *str != '\0'; str++) | |||
if (*str >= 'a' && *str <= 'z') | |||
*str += 'A' - 'a'; | |||
} | |||
int strcpy(char *d, char *s){ //내용 복사 destination = 복사될 장소 source = 복사할 원본 | |||
for (; *s != '\0'; s++, d++){ | |||
*d = *s; | |||
} | |||
*d = '\0'; | |||
} | |||
char* strdup(char *s){ //문자열 생성+복사 | |||
int len = strlen(s); | |||
char *res = (char*)malloc(sizeof(char)*(len + 1)); | |||
for (int i = 0; i <= len; i++) | |||
res[i] = s[i]; | |||
return res; | |||
} | |||
void strcat(char *d, char *s){ //연결 concatenation 제약 : d는 수정 가능, d 커야돼 | |||
for (; *d != '\0'; d++); | |||
for (; *s != '\0'; s++, d++) | |||
*s = *s; | |||
*d = '\0'; | |||
} | |||
int strstr(char *s, char *p){ //매칭, 두 개 해서 안에 들어있나 없나 | |||
int s_len, p_len; | |||
p_len = strlen(p); | |||
s_len = strlen(s); | |||
for (int i = 0; i < (s_len - p_len); i++) | |||
if (s[i] == p[0]){ | |||
int k; | |||
for (k = i; k < p_len; k++) | |||
if (s[i + k] != p[k]) break; | |||
if (k == p_len) return i; | |||
} | |||
return -1; | |||
} | |||
== 최지혁 == | == 최지혁 == | ||
*문자열 = 문자 배열 | |||
[c] [r] [e] [a] [m] | |||
ex) char* str = "cream" | |||
*str = c | |||
*(str + 1 ) = r | |||
*(str + 2 ) = e | |||
... | |||
*직접 문자열 만들기 | |||
char str[10]; | |||
str [0] = 'c' | |||
1 | |||
... | |||
str[n] = \0 넣어야! | |||
(안넣으면 무한 루프) | |||
*char c = '\0' -> 널 문자(문자끝) | |||
printf("%s","cream\n" ) | |||
-> cream\n\0이 되서 \0 나올때까지 출력 | |||
(\n,\0는 한 문자로 인식) | |||
#pragma warning (disable:4996) | |||
#include<malloc.h> | |||
int strlen(char*s) //길이 | |||
{ | |||
int res = 0; | |||
for (; *s != '\0'; s++, res++) | |||
return res; | |||
} | |||
int strcmp(char*s, char*d) //일치비교 | |||
{ | |||
for (;*s != '\0'; s++, d++) | |||
if(*s != *d)return 0; | |||
if (*d == '\0') return 1; | |||
return 0; | |||
} | |||
void strtoupper(char*str) // ""로 한 건 여기에 넣을 수 없다. ""는 다른데도 쓰일까봐 상수로 처리되서 변경 x. 대신 ''로 하나하나 넣은건 넣을 수 있다. | |||
{ | |||
for (; *str != '\0'; str++) | |||
{ | |||
if (*str >= 'Q' && *str <= 'z') | |||
*str == 'A' - 'a'; | |||
} | |||
} | |||
int strtolower(char*str) | |||
{ | |||
for( ;*str!='\0' ; str ++ ) | |||
{ | |||
if(*str >= 'Q' && *str <= 'z') | |||
*str == 'a' - 'A'; | |||
} | |||
} | |||
} | |||
int strcpy(char*d ,char*s) //문자열 내용 복사 d는 복사될 장소, source는 복사할 원본 | |||
{ | |||
for (; *s != '\0'; s++, d++) | |||
{ | |||
*d = *s; | |||
} | |||
*d = '\0'; | |||
} | |||
char* strdup(char*s) //문자열 생성+복사 | |||
{ | |||
int len = strlen(s); //문자 몇 갠지 세기 | |||
char *res = (char*)malloc(sizeof(char)*(len + 1)); | |||
for (int i = 0; i <= len; i++) | |||
res[i] = s[i]; | |||
return res; | |||
} | |||
void strcat(char*d, char*s) // 하나를 다른 하나의 뒤에 연결하기. d는 수정가능, 직접 메모리할당하든 함수로 하든 한땀한땀 넣은거만 d에 넣을 수 있음, d는 충분히 커야함 | |||
{ | |||
for (; *d != '\0'; d++); //문자열 끝까지 주소 이동 | |||
for (; *s != '\0'; s++, d++) | |||
*d = *s; | |||
*d = '\0'; | |||
} | |||
int strstr(char*s, char*p) //p는 패턴 한 문자열 안에 다른 문자열 있나 확인 | |||
{ | |||
int s_len,p_len; | |||
p_len = strlen(p); | |||
s_len = strlen(s); | |||
for (int i = 0; i < s_len - p_len /*이거 없음 i 더 커져서 다른 곳 침범*/; i++) | |||
{ | |||
if (s[i] == p[0]) //다른 문자열에서 같은 첫글자 발견시 | |||
{ | |||
int k; | |||
for (k = 0; k < p_len; k++) //중간에 문자가 달라 if에 걸려 나오지 않으면 맞는거 | |||
if (s[i + k] != p[k]) break; | |||
if (k == p_len) return i; //다 맞으면 i(시작할 위치)에 리턴, 틀리면 break로 다시 for 돌기 | |||
} | |||
return -1; } | |||
} | |||
== 박인서 == | == 박인서 == | ||
* 문자열 : 문자 배열->문자를 여러개 저장 | * 문자열 : 문자 배열->문자를 여러개 저장 | ||
** 선언 : char * str;(기존의 포인터 배열처럼 *(str+i)로 지정 가능) 혹은 char | ** 선언 : char * str;(기존의 포인터 배열처럼 *(str+i)로 지정 가능) 혹은 char str원하는 문자열의 문자 갯수; | ||
** 문자열의 끝을 NULL='\0'(아스키코드값 0)로 지정->원하는 문자열 길이+1 | ** 문자열의 끝을 NULL='\0'(아스키코드값 0)로 지정->원하는 문자열 길이+1 | ||
** %s로 출력, 쌍따옴표("")는 마지막에 알아서 NULL문자를 넣어줌. | ** %s로 출력, 쌍따옴표("")는 마지막에 알아서 NULL문자를 넣어줌. | ||
| Line 75: | Line 257: | ||
} | } | ||
** strtoupper : 소문자를 대문자로 모두 변경(직접 대입한 문자(열)를 바꾸기 못함) | ** strtoupper : 소문자를 대문자로 모두 변경(직접 대입한 문자(열)를 바꾸기 못함) | ||
void strtoupper(char * str) | |||
{ | { | ||
for(;*str!='\0';str++) if(*str>='a' && *str<='z') *str+=(int)('A'-'a'); | for(;*str!='\0';str++) if(*str>='a' && *str<='z') *str+=(int)('A'-'a'); | ||
} | } | ||
** strtolower : 대문자를 소문자로 모두 변경(직접 대입한 문자(열)를 바꾸기 못함) | ** strtolower : 대문자를 소문자로 모두 변경(직접 대입한 문자(열)를 바꾸기 못함) | ||
void strtolower(char * str) | |||
{ | { | ||
for(;*str!='\0';str++) if(*str>='A' && *str<='Z') *str+=(int)('a'-'A'); | for(;*str!='\0';str++) if(*str>='A' && *str<='Z') *str+=(int)('a'-'A'); | ||
} | } | ||
** strcpy : 한 문자열의 내용을 다른 문자열에 복사(문자열의 길이가 복사하고자 하는 문자열 변수의 범위를 초과하면 안됨) | ** strcpy : 한 문자열의 내용을 다른 문자열에 복사(문자열의 길이가 복사하고자 하는 문자열 변수의 범위를 초과하면 안됨) | ||
void strcpy(char * d, char * s) | |||
{ | { | ||
for(;*s!='\0';s++,d++) *d=*s; | for(;*s!='\0';s++,d++) *d=*s; | ||
| Line 95: | Line 277: | ||
int len=strlen(s),i; | int len=strlen(s),i; | ||
char * res = (char *) malloc(sizeof(char)*(len+1)); | char * res = (char *) malloc(sizeof(char)*(len+1)); | ||
for(i=0;i<=len;i++) res | for(i=0;i<=len;i++) res[i]=s[i]; | ||
return res; | return res; | ||
} | } | ||
| Line 113: | Line 295: | ||
for(i=0;i<(slen-plen);i++) | for(i=0;i<(slen-plen);i++) | ||
{ | { | ||
if(s | if(s[i]==p[i]) | ||
{ | { | ||
for(j=i;j<=i+plen;j++) if(s | for(j=i;j<=i+plen;j++) if(s[i+j]!=p[j]) break; | ||
if(j==plen) return i; | if(j==plen) return i; | ||
} | } | ||
| Line 122: | Line 304: | ||
} | } | ||
** trim : ~~꺼억~~ 두가지 종류가 있다. | ** trim : ~~꺼억~~ 두가지 종류가 있다. | ||
** | ** ltrim : 문자가 나오기 전까지의 공백을 앞으로 땡김 | ||
** | void ltrim(char * str) | ||
{ | |||
int cnt=0; | |||
for(;*str!='\0';str++) | |||
{ | |||
if(*str==' ') | |||
{ | |||
cnt++; | |||
*(str+cnt)=*str; | |||
} | |||
} | |||
*(str+cnt)=*str; | |||
} | |||
** rtrim : 문자열이 다나온 뒤의 공백을 없애고 NULL을 앞으로 땡김 | |||
void rtrim(char * str) | |||
{ | |||
int len,cnt=0,i; | |||
for(i=len-1;i>=0;i--) | |||
{ | |||
if(*(str+i)==' ') | |||
{ | |||
cnt++; | |||
*(str+i)=*(str+i+cnt); | |||
} | |||
} | |||
} | |||
---- | ---- | ||
----------------------------------- | ----------------------------------- | ||
| Line 130: | Line 336: | ||
[[새싹교실/2015/의사양반]] | [[새싹교실/2015/의사양반]] | ||
* 제가 한번 페이지를 만들어 보았습니다. 허헣 - [[박인서]] | * 강사님이 너무 힘들어 하시는 것 같아서 제가 한번 페이지를 만들어 보았습니다. 허헣 - [[박인서]] | ||
Latest revision as of 00:45, 27 March 2026
참여자 명단
| 의사 | 장용운 | 11학번 | ~~취침~~출석 |
| 환자 | 천준현 | 15학번 | 출석 |
| 최지혁 | 출석 | ||
| 박인서 | ~~의사처럼 자다왔는데 어쩌다보니~~ 출석 |
수업
진행
- 장소 : 6층 학회실
- 시간 : ~~15시~~ 16시 ~ 17시 ~~2시간 같은 1시간이 되어버렸다.~~
내용
12강. 문자열
- 문자열이란?
- 문자열의 선언
- 문자열 함수
코드
예제1
숙제
- 이 페이지에 후기 작성하기!
- 오늘 공부한 개념 수업 페이지에 정리하기!
- 문자열 함수 trim을 조사하고 짜오기
후기
- 후기 작성 요령 : 후기는 F4(ThreeFs + Future Action Plan)에 맞게 작성해주세요.
- Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획.
- 뭔가 내용을 받아들인다기보다 그냥 점점 머리가 아파지는 기분이에요. 더 열심히 해야하는데 하.... - 천준현
*살려주세요, 레알. - 최지혁
- ~~이 정도면 쉬어가는 타임인가~~ 2시간 같은 1시간 이었지만 전 시간에 비하면 쉬어가는 타임이네요.. 음 역시 포인터는 어려웠군요.. 이전까지의 내용을 복습하는데에 중점을 두고 복습하겠습니다. - 박인서
숙제 제출
천준현
문자열(string)
char* str = "cream";
*str 은 c
*(str+i) 로
문자열 마지막엔 무조건 null 문자, 공간을 무조건 하나 더 차지함..
char c = '\0'
널문자
%s
null문자를 만날때까지 출력
char str[10];
str[0] = 'c'
1 = 'h'
2 = 'o'
3 = 'o'
4 = '\0'
#include <stdio.h>
#pragma warning (disable : 4996)
#include <malloc.h>
int strlen(char*s){ //길이 재기
int res = 0;
for (; *s != '\0'; s++) res++;
return res;
}
int strcmp(char *s, char *d){ //일치비교
for (; *s != '\0'; s++, d++)
if (*s != *d) return 0;
if (*d == '\0') return 1;
return 0;
}
void strtoupper(char *str){ // 소문자를 대문자로 " ", ' ' 는 쓸 수 없다. 대입을 할 수 없기 때문
for (; *str != '\0'; str++)
if (*str >= 'a' && *str <= 'z')
*str += 'A' - 'a';
}
int strcpy(char *d, char *s){ //내용 복사 destination = 복사될 장소 source = 복사할 원본
for (; *s != '\0'; s++, d++){
*d = *s;
}
*d = '\0';
}
char* strdup(char *s){ //문자열 생성+복사
int len = strlen(s);
char *res = (char*)malloc(sizeof(char)*(len + 1));
for (int i = 0; i <= len; i++)
res[i] = s[i];
return res;
}
void strcat(char *d, char *s){ //연결 concatenation 제약 : d는 수정 가능, d 커야돼
for (; *d != '\0'; d++);
for (; *s != '\0'; s++, d++)
*s = *s;
*d = '\0';
}
int strstr(char *s, char *p){ //매칭, 두 개 해서 안에 들어있나 없나
int s_len, p_len;
p_len = strlen(p);
s_len = strlen(s);
for (int i = 0; i < (s_len - p_len); i++)
if (s[i] == p[0]){
int k;
for (k = i; k < p_len; k++)
if (s[i + k] != p[k]) break;
if (k == p_len) return i;
}
return -1;
}
최지혁
*문자열 = 문자 배열
[c] [r] [e] [a] [m]
ex) char* str = "cream"
*str = c
*(str + 1 ) = r
*(str + 2 ) = e
...
*직접 문자열 만들기
char str[10];
str [0] = 'c'
1
...
str[n] = \0 넣어야!
(안넣으면 무한 루프)
*char c = '\0' -> 널 문자(문자끝)
printf("%s","cream\n" )
-> cream\n\0이 되서 \0 나올때까지 출력
(\n,\0는 한 문자로 인식)
#pragma warning (disable:4996)
#include<malloc.h>
int strlen(char*s) //길이
{
int res = 0;
for (; *s != '\0'; s++, res++)
return res;
}
int strcmp(char*s, char*d) //일치비교
{
for (;*s != '\0'; s++, d++)
if(*s != *d)return 0;
if (*d == '\0') return 1;
return 0;
}
void strtoupper(char*str) // ""로 한 건 여기에 넣을 수 없다. ""는 다른데도 쓰일까봐 상수로 처리되서 변경 x. 대신 로 하나하나 넣은건 넣을 수 있다.
{
for (; *str != '\0'; str++)
{
if (*str >= 'Q' && *str <= 'z')
*str == 'A' - 'a';
}
}
int strtolower(char*str)
{
for( ;*str!='\0' ; str ++ )
{
if(*str >= 'Q' && *str <= 'z')
*str == 'a' - 'A';
}
}
}
int strcpy(char*d ,char*s) //문자열 내용 복사 d는 복사될 장소, source는 복사할 원본
{
for (; *s != '\0'; s++, d++)
{
*d = *s;
}
*d = '\0';
}
char* strdup(char*s) //문자열 생성+복사
{
int len = strlen(s); //문자 몇 갠지 세기
char *res = (char*)malloc(sizeof(char)*(len + 1));
for (int i = 0; i <= len; i++)
res[i] = s[i];
return res;
}
void strcat(char*d, char*s) // 하나를 다른 하나의 뒤에 연결하기. d는 수정가능, 직접 메모리할당하든 함수로 하든 한땀한땀 넣은거만 d에 넣을 수 있음, d는 충분히 커야함
{
for (; *d != '\0'; d++); //문자열 끝까지 주소 이동
for (; *s != '\0'; s++, d++)
*d = *s;
*d = '\0';
}
int strstr(char*s, char*p) //p는 패턴 한 문자열 안에 다른 문자열 있나 확인
{
int s_len,p_len;
p_len = strlen(p);
s_len = strlen(s);
for (int i = 0; i < s_len - p_len /*이거 없음 i 더 커져서 다른 곳 침범*/; i++)
{
if (s[i] == p[0]) //다른 문자열에서 같은 첫글자 발견시
{
int k;
for (k = 0; k < p_len; k++) //중간에 문자가 달라 if에 걸려 나오지 않으면 맞는거
if (s[i + k] != p[k]) break;
if (k == p_len) return i; //다 맞으면 i(시작할 위치)에 리턴, 틀리면 break로 다시 for 돌기
}
return -1; }
}
박인서
- 문자열 : 문자 배열->문자를 여러개 저장
- 선언 : char * str;(기존의 포인터 배열처럼 *(str+i)로 지정 가능) 혹은 char str원하는 문자열의 문자 갯수;
- 문자열의 끝을 NULL='\0'(아스키코드값 0)로 지정->원하는 문자열 길이+1
- %s로 출력, 쌍따옴표("")는 마지막에 알아서 NULL문자를 넣어줌.
- 문자열 함수
- strlen : 문자열의 길이을 return
int strlen(char * s)
{
int res=0;
for(;*s!='\0';s++) res++;
return res;
}
- strcmp : 문자열 2개를 비교하여 같으면 1을 return, 다르면 0을 return
int strcmp(char * s, char * d)
{
for(;*s!='\0';s++,d++) if(*s!=*d) return 0;
if(*d=='\0') return 1;
return 0;
}
- strtoupper : 소문자를 대문자로 모두 변경(직접 대입한 문자(열)를 바꾸기 못함)
void strtoupper(char * str)
{
for(;*str!='\0';str++) if(*str>='a' && *str<='z') *str+=(int)('A'-'a');
}
- strtolower : 대문자를 소문자로 모두 변경(직접 대입한 문자(열)를 바꾸기 못함)
void strtolower(char * str)
{
for(;*str!='\0';str++) if(*str>='A' && *str<='Z') *str+=(int)('a'-'A');
}
- strcpy : 한 문자열의 내용을 다른 문자열에 복사(문자열의 길이가 복사하고자 하는 문자열 변수의 범위를 초과하면 안됨)
void strcpy(char * d, char * s)
{
for(;*s!='\0';s++,d++) *d=*s;
*d='\0';
}
- strdup : 문자열 하나를 생성 후 그 곳에 다른 문자열을 복사
char * strdup(char * s)
{
int len=strlen(s),i;
char * res = (char *) malloc(sizeof(char)*(len+1));
for(i=0;i<=len;i++) res[i]=s[i];
return res;
}
- strcat : 한 문자열의 내용을 다른 문자열에 이어붙이기(붙여야 될 문자열 변수가 수정할 수 있는 문자열이여야 함, 붙여야 될 문자열 변수가)
void strcat(char * d, char * s)
{
for(;*d='\0';d++) ;
for(;*s!='\0';s++,d++) *d=*s;
*d='\0';
}
- strstr : 한 문자열 내에 다른 문자열의 내용이 존재하는지 확인, 인덱스 위치를 return 못찾으면 -1을 return
int strstr(char * s,char * p)
{
int slen,plen,i,j;
slen=strlen(s);
plen=strlen(p);
for(i=0;i<(slen-plen);i++)
{
if(s[i]==p[i])
{
for(j=i;j<=i+plen;j++) if(s[i+j]!=p[j]) break;
if(j==plen) return i;
}
}
return -1;
}
- trim : ~~꺼억~~ 두가지 종류가 있다.
- ltrim : 문자가 나오기 전까지의 공백을 앞으로 땡김
void ltrim(char * str)
{
int cnt=0;
for(;*str!='\0';str++)
{
if(*str==' ')
{
cnt++;
*(str+cnt)=*str;
}
}
*(str+cnt)=*str;
}
- rtrim : 문자열이 다나온 뒤의 공백을 없애고 NULL을 앞으로 땡김
void rtrim(char * str)
{
int len,cnt=0,i;
for(i=len-1;i>=0;i--)
{
if(*(str+i)==' ')
{
cnt++;
*(str+i)=*(str+i+cnt);
}
}
}
- 강사님이 너무 힘들어 하시는 것 같아서 제가 한번 페이지를 만들어 보았습니다. 허헣 - 박인서