전기전자공학/프로젝트
[Kernighan - C] #2-8 증가 연산자와 감소 연산자
LinZBe4hia
2017. 6. 25. 21:46
2.8 증가 연산자와 감소 연산자
The C Programming - Kernighan
<예제>
[예제 2-4]
문자열 s2의 문자 중 문자열 s1에 있는 문자들을 지우는 squeeze(s1, s2)를 작성하라
squeeze.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 | /* * Filename: squeeze.c * Author: Ssong24 <pub50@naver.com> * Date: 25-June-2017 * * The C Programming Language, Second Edition, Korean ver * by Kernighan and Ritchie * * Exercise 2-4, page 64 */ #include <stdio.h> #define TRUE 1 #define FALSE 0 void squeeze(char s1[], char s2[]) { int i, j; for (i = j = 0; s1[i] != '\0'; i++) if (!check(s1[i], s2)) s1[j++] = s1[i]; s1[j] = '\0'; } int check(char ch, char s2[]) { int state = FALSE; int i; for (i = 0; i < strlen(s2); i++) { if (ch == s2[i]) { state = TRUE; return state; } else state = FALSE; } return state; } | cs |
main.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 | #include <stdio.h> #define MAXLINE 1000 int getline(char line[], int maxline); main() { char str1[MAXLINE]; char str2[MAXLINE]; getline(str1, MAXLINE); getline(str2, MAXLINE); squeeze(str1, str2); printf("%s\n", str1); } int getline(char s[], int lim) { int c, i; for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; i++) s[i] = c; if (c == '\n') { s[i] = c; ++i; } s[i] = '\0'; return i; } | cs |
[예제 2-5]
문자열 s1에서 문자열 s2에 있는 문자들 중 하나가 나타나는 지를 찾아서 처음 나타나는 것의 위치(s1 내에서의 위치)를 리턴하고,
없을 경우 -1을 리턴하는 함수 any(s1, s2)를 작성하라
(표준 라이브러리 함수 strpbrk는 같은 작용을 하고, 단지 그 위치에 대한 포인터를 리턴한다.)