코딩할때 포인터 없어도 됨.. 별 쓸대 없는걸로 힘빼지 말고 딸이나 함씩 치고 자라.
----------------------------------------------------------------------------------
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define JOB_LEN 1
#define JOB_EQU 2
#define JOB_IND 3
typedef struct _fun_class{
char *string;
int job;
int (*length)(struct _fun_class *);
int (*equals)(struct _fun_class *, char*);
int (*indexOf)(struct _fun_class *, char*);
int (*whichJob)(struct _fun_class *, char*, int);
}_fun_class;
int length(_fun_class *me)
{
if(me->string) return strlen(me->string);
return 0;
}
int equals(_fun_class *me, char *tgt)
{
if(me->string) return (strcmp(me->string, tgt))?0:1;
return 0;
}
int indexOf(_fun_class *me, char *tgt)
{
if(me->string){
char *p;
p = strstr(me->string, tgt);
if(p) return (p-(me->string));
else return -1;
}
return -1;
}
int whichJob(struct _fun_class *me, char*str, int job)
{
if(job == JOB_LEN) return me->length(me);
else if(job == JOB_EQU) return me->equals(me, str);
else if(job == JOB_IND) return me->indexOf(me, str);
return 0;
}
_fun_class *my_new_string(char *str)
{
_fun_class *myString;
myString = (_fun_class *)malloc(sizeof(_fun_class));
myString->length = length;
myString->equals = equals;
myString->indexOf = indexOf;
myString->whichJob = whichJob;
myString->job = 0;
if(str) myString->string = strdup(str);
else myString->string = NULL;
}
void my_delete_string(_fun_class *myString)
{
if(myString->string) free(myString->string);
if(myString) free(myString);
}
int main()
{
_fun_class *myString = NULL;
myString = my_new_string("아버지가 방에 들어 가신다.");
printf("str : %s\\n", myString->string);
printf("length : %d\\n", myString->length(myString));
printf("equals : %d\\n", myString->equals(myString, "아버지"));
printf("equals : %d\\n", myString->equals(myString, "아버지가 방에 들어 가신다."));
printf("indexOf : %d\\n", myString->indexOf(myString, "방에"));
printf("indexOf : %d\\n", myString->indexOf(myString, "가신"));
printf("JOB_LEN : %d\\n", myString->whichJob(myString, "가방", JOB_LEN));
printf("JOB_EQU : %d\\n", myString->whichJob(myString, "가방", JOB_EQU));
printf("JOB_IND : %d\\n", myString->whichJob(myString, "가방", JOB_IND));
my_delete_string(myString);
}
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.