분석할 코드 :
#include <stdio.h>
int strchr(char *str, char ch) {
int idx = 0;
while (*str) {
if (*str == ch)
return idx;
str++;
idx++;
}
return -1;
}
int rstrchr(char *str, char ch) {
int idx;
for (idx = 0; str[idx] != '\0'; idx++)
;
for (idx--; idx >= 0; idx--)
if (str[idx] == ch)
return idx;
return -1;
}
void main(void) {
char str[ ] = "university";
printf("%d", strchr(str, 'i'));
printf("%d", rstrchr(str, 'i'));
}
위 코드는 strchr, rstchr, main 이렇게 3개의 함수로 이루어진 코드입니다.
먼저, strchr 함수부터 보도록 하겠습니다.
- int형 함수 strchr
받는 인자: char형 포인터 str, char형 ch
int형 idx라는 변수 생성 = 0 저장
포인터 str일 동안 명령을 반복 {
만약에 포인터 str과 ch가 같다면 {
idx 값을 리던하기
}
}
사실, 해당 코드는 아래 main 함수의 str[ ] 에 접근하려고 하고 있습니다.
그러므로 포인터를 사용해 접근하고 있는 모습을 보여주고 있습니다.
- int형 함수 rstchr
받는 인자: char형 포인터 str, char형 ch
int형 idx라는 변수 생성
시작값 idx는 0, str 배열의 값이 '\n(NULL)'이 아닐때 까지, idx를 1씩 증가 시키면서
idx를 1씩 감소 시키면서, idx가 0보다 같거나 클때까지, idex를 1씩 감소 시키면서 {
만약 str의 [idx] 가 ch와 같다면 {
idx 값을 리턴하기
}
}
- void형 함수 main
받는 인자: (void)
char형 chr에 "university" 라는 값 저장
strchr 함수에 'i'가 들어갔을 때의 값 출력
rstchr 함수에 'i'가 들어갔을 때의 값 출력
이렇게 코드를 말로 풀어서 설명해 보았습니다.
결론적으로, 해당 코드는 chr 안의 값들이 배열의 어느 위치에 있는지를 출력하는 코드입니다.
i를 넣었으니, 출력값으로는 2와 7이 나올 것입니다. 배열은 0부터 시작한다는 사실, 꼭 기억하세요!

순서도로 나타낸다면 이런 순서도가 만들어집니다.
'🖥️ 프로그래밍' 카테고리의 다른 글
행렬, 테이블을 넘어 그래프로 - Matplotlib (0) | 2022.05.29 |
---|---|
데이터 조작과 분석 + 테이블까지, pandas (0) | 2022.05.23 |
행렬관련 계산을 빠르게, NumPy (0) | 2022.05.17 |
보다 더 많은 양의 데이터를 편하게! - 배열과 문자열 (0) | 2022.04.12 |
C언어의 첫번째 고비 - 반복문 (for) (0) | 2022.04.04 |
분석할 코드 :
#include <stdio.h>
int strchr(char *str, char ch) {
int idx = 0;
while (*str) {
if (*str == ch)
return idx;
str++;
idx++;
}
return -1;
}
int rstrchr(char *str, char ch) {
int idx;
for (idx = 0; str[idx] != '\0'; idx++)
;
for (idx--; idx >= 0; idx--)
if (str[idx] == ch)
return idx;
return -1;
}
void main(void) {
char str[ ] = "university";
printf("%d", strchr(str, 'i'));
printf("%d", rstrchr(str, 'i'));
}
위 코드는 strchr, rstchr, main 이렇게 3개의 함수로 이루어진 코드입니다.
먼저, strchr 함수부터 보도록 하겠습니다.
- int형 함수 strchr
받는 인자: char형 포인터 str, char형 ch
int형 idx라는 변수 생성 = 0 저장
포인터 str일 동안 명령을 반복 {
만약에 포인터 str과 ch가 같다면 {
idx 값을 리던하기
}
}
사실, 해당 코드는 아래 main 함수의 str[ ] 에 접근하려고 하고 있습니다.
그러므로 포인터를 사용해 접근하고 있는 모습을 보여주고 있습니다.
- int형 함수 rstchr
받는 인자: char형 포인터 str, char형 ch
int형 idx라는 변수 생성
시작값 idx는 0, str 배열의 값이 '\n(NULL)'이 아닐때 까지, idx를 1씩 증가 시키면서
idx를 1씩 감소 시키면서, idx가 0보다 같거나 클때까지, idex를 1씩 감소 시키면서 {
만약 str의 [idx] 가 ch와 같다면 {
idx 값을 리턴하기
}
}
- void형 함수 main
받는 인자: (void)
char형 chr에 "university" 라는 값 저장
strchr 함수에 'i'가 들어갔을 때의 값 출력
rstchr 함수에 'i'가 들어갔을 때의 값 출력
이렇게 코드를 말로 풀어서 설명해 보았습니다.
결론적으로, 해당 코드는 chr 안의 값들이 배열의 어느 위치에 있는지를 출력하는 코드입니다.
i를 넣었으니, 출력값으로는 2와 7이 나올 것입니다. 배열은 0부터 시작한다는 사실, 꼭 기억하세요!

순서도로 나타낸다면 이런 순서도가 만들어집니다.
'🖥️ 프로그래밍' 카테고리의 다른 글
행렬, 테이블을 넘어 그래프로 - Matplotlib (0) | 2022.05.29 |
---|---|
데이터 조작과 분석 + 테이블까지, pandas (0) | 2022.05.23 |
행렬관련 계산을 빠르게, NumPy (0) | 2022.05.17 |
보다 더 많은 양의 데이터를 편하게! - 배열과 문자열 (0) | 2022.04.12 |
C언어의 첫번째 고비 - 반복문 (for) (0) | 2022.04.04 |