C언어 과제 문자열에서 찾는 문자열의 이전 문자들을 리턴
조회수 399회
char *str_chr(char *s, int c){
int i = 0;
while(s[i]){
if(s[i] != c){
return &s[i];
}
i++;
}
return NULL;
}
int main(){
char str[100];
char ch[10];
char *p;
scanf("%s %s", str, ch);
if((p = str_chr(str, ch[0])) == NULL)
printf("NO");
else
printf("이전문자는 %s 입니다.", p);
return 0;
}
이런 식으로 계속 도전해 보고 있기는 한데 str_chr
사용자 정의 함수로 입력 받은 문자열에서 찾는 문자열의 이전 문자들을 리턴시키려고 계속 해보는데 도저히 결론에 도달하기가 힘듦니다. 어떻게 코드를 손봐야할지 조언좀 해주실수 있을까요?
하필 조건중에 저기 if, else 문을 꼭 사용하라고 하더라구요. 저 조건때문에 너무 어렵습니다.
1 답변
-
의도하는 것이 찾는 문자보다 이전에 있는 문자열을 얻는 것이라면 아래와 같이 하면 가능합니다.
"이전" 문자열이라고 하면 원래 문자열의 "처음부터 현재 위치 까지"를 의미하는데, 현재 위치에서 끊기 위해서는 널 문자('/0')를 넣어줘야 합니다.
C언어에서는 문자열의 끝을 이 널문자로 판단하기 때문이에요.
#include <stdio.h> char *str_chr(char *s, char c){ int i = 0; while(s[i]){ if(s[i] == c){ s[i] = '\0'; return &s[0]; } i++; } return NULL; } int main(){ char str[100] = "sample sting"; char ch = 'e'; char *p; if((p = str_chr(str, ch)) == NULL) printf("NO"); else printf("이전문자는 %s 입니다.", p); return 0; }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력