ipwn
C) strlen, strcmp, strcpy 함수 조사 및 구현 본문
1.string.h 헤더파일
strlen,strcmp,strcpy이 세 함수를 사용하기 위한 헤더파일입니다.
당연한 말이지만 이 세 함수 말고도 더 많은 함수들이 포함되어 있습니다.
2. strlen함수
strlen 함수는 한 문자열의 크기를 측정하는 함수입니다.
사용은 아래와 같은 방식으로 이뤄 집니다.
1 2 3 4 5 6 7 8 9 10 11 | #include<stdio.h> #include<string.h> int main() { int howlong; char input[400]; gets_s(input); howlong = strlen(input); printf("input의 길이는 %d 입니다.", howlong); return 0; } | cs |
위 코드를 실행하면 아래와 같은 실행결과가 출력 됩니다.
띄어쓰기 포함, 글자의 크기를 측정 해 줍니다.
위 방법을 심화시켜 사용하면 아래와 같은 코드를 만들 수 있습니다.
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 | #include<stdio.h> #include<string.h> int main() { char ch[200]; int i, j; int a, b, cnt = 0; gets_s(ch); for (i = 0; i <= strlen(ch); ++i) {//문자열의 길이만큼 반복문 반복 if (0x30 <= ch[i] && 0x39 >= ch[i] && cnt == 0) {//a에 숫자 대입 a = ch[i] - 0x30; cnt++; } else if (0x30 <= ch[i] && ch[i] <= 0x39 && cnt == 1) {//b에 숫자 대입 b = ch[i] - 0x30; } } for (j = 0; j <= strlen(ch); ++j) {//문자열 길이만큼 반복문 반복 switch (ch[j]) {//연산자인지 확인 후 연산 뒤 결과 출력 case '+':printf("%d", a + b); break; case '-':printf("%d", a - b); break; case '*':printf("%d", a * b); break; case '/':printf("%d", a / b); break; } } return 0; } | cs |
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
문자열 길이와 반복문, 조건문을 적절히 섞어 문자열로 수식을 입력받아
실행 결과를 출력합니다.(한자리수만)
for문으로 구현하면 아래와 같은 코드가 나옵니다,
실행결과는 첫째 코드와 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include<stdio.h> int main() { int i; char input[400]; gets_s(input); int cnt = 0; for (i = 0; input[i] != '\0'; ++i) { cnt++; } printf("input의 길이는 %d 입니다.", cnt); return 0; } | cs |
3. strcmp 함수
strcmp 함수는 두개의 문자열을 비교해주는 함수 입니다.
strcmp는 두 문자열이 같을경우 0, 다를경우는 1 또는 -1로 반환되는데요,
1 | strcmp(ch1,ch2); | cs |
위와 같은 코드가 있다고 가정하면
1로 반환되는 경우는 ch1이 ch2보다 사전순서로 뒤에 있는 경우 이고,
-1로 반환되는 경우는 ch1이 ch2보다 사전순서로 앞에 있는 경우 입니다.
사용법은 아래와 같은 방식입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include<stdio.h> #include<string.h> int main() { char in[200], put[200]; int same; printf("첫번째 문자열 입력 : "); gets_s(in); printf("두번째 문자열 입력 : "); gets_s(put); same = strcmp(in, put);//strcmp는 두 문자열이 같을시 0, 다를경우 1또는 -1 if (same == 0) {//두 문자열이 같은지 비교 printf("두 문자열은 같습니다.\n"); } else { printf("두 문자열은 다릅니다.\n"); } return 0; } | cs |
위 코드를 실행하면 아래와 같은 결과를 출력합니다.
말 그대로 두 문자열을 비교해주는 코드였습니다. strcmp 함수를 심화해서
사용한다면 아래와 같은 방식도 가능하겠죠?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include<stdio.h> #include<string.h> int main() { char ch[200]; char pw[] = "PassWord"; do { printf("비밀번호를 입력하시오 : "); gets_s(ch); } while (strcmp(ch, pw) != 0);//pw 문자열과 ch 문자열이 같을경우 반복문 탈출 printf("Login Success!!\n"); return 0; } | cs |
실행결과는 다음과 같습니다.
pw 문자열과 똑같은 문자열을 입력할 경우 반복문을 탈출하지만 ,
다를경우 계속해서 반복문을 돌면서 pw문자열과 같은 문자열을 입력해야 합니다.
for문으로 구현하면 아래와 같은 코드가 나옵니다,
실행결과는 strcmp 첫 코드와 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include<stdio.h> int main() { int i, j; char in[400]; char put[400]; int cnt = 0; int count = 0; gets_s(in); gets_s(put); for (i = 0; in[i] != '\0'; ++i) cnt++; for (j = 0; put[j]!='\0'; ++j) { if (in[j] == put[j]||count==cnt) { count++; } } if (count == cnt) { printf("두 문자열은 같습니다."); } else { printf("두 문자열은 다릅니다."); } return 0; } | cs |
4. strcpy 함수
strcpy 함수는 문자열을 복사해주는 함수인데요
형태는 아래 코드와 같습니다.
1 2 3 4 5 6 7 8 9 10 | #include<stdio.h> #include<string.h> int main() { char ch[400]; char output[400]; gets_s(ch); strcpy(output, ch); printf("%s", output); return 0; } | cs |
ch에 문자열을 입력받고 output에 그대로 복사해주는 코드입니다.
실행결과는 위와 같습니다.
이건 딱히 예제 만들게 없네요..
for문으로 구현하면 아래와 같은 코드입니다,
실행 결과는 첫번째 코드의 실행결과와 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | #include<stdio.h> int main() { int i; char input[400]; char output[400]; gets_s(input); for (i = 0; input[i - 1] != '\0'; ++i) { output[i] = input[i]; } printf("%s", output); return 0; } | cs |
'Programming' 카테고리의 다른 글
C) 코드업 함수문제 풀이 (0) | 2017.12.18 |
---|---|
C) swap 함수 구현 (0) | 2017.12.18 |
C) 포인터 (0) | 2017.12.18 |
C) 함수란 ? (0) | 2017.12.18 |
C) 배열, 2차원 배열이란? (0) | 2017.12.18 |