출제자의 뜻이 strstr함수를 이용하는 것이 아니라
strstr, strcase, strspn등과 비슷한 함수를 제작하는 것이었다면 이 답은 틀렸다.
strstr, strcase, strspn등과 비슷한 함수를 제작하는 것이었다면 이 답은 틀렸다.
~cpp #include <stdio.h> #include <stdlib.h> #include <string.h> #include <signal.h> // while 고치기 귀찮다. while을 무한 루프 돌리고 Ctrl-C를 정상적인 종료로 바꿔 끝내자. void handler(int sig) { fprintf(stderr, "\n프로그램을 종료합니다.\n"); exit(0); } // int main() { FILE *fp; char x[40] = "His teaching method is very good."; char buf[10]; char *loc; // signal handling struct sigaction act; act.sa_handler = handler; sigemptyset(&act.sa_mask); act.sa_flags = 0; sigaction(SIGINT, &act, 0); // if((fp = fopen("result.out", "w")) == NULL) fprintf(stderr, "fopen() error: result.out\n"), exit(-1); while(1){ fprintf(fp, "자료 -> %s\n", x); fprintf(fp, "찾을 문자열 -> "); printf("찾을 문자열 -> "); fgets(buf, sizeof(buf), stdin); // 문자열이라고 했으니 space를 포함한다. buf[strlen(buf)-1] = '\0'; // stream으로 받은 \n을 제거한다. fprintf(fp, "%s\n", buf); if((loc = strstr(x, buf)) == 0) fprintf(fp, "Not Found!\n"); else fprintf(fp, "first found -> %d\n", loc-x); fflush(fp); } fclose(fp); return 0; }
~cpp // result.out 자료 -> His teaching method is very good. 찾을 문자열 -> method first found -> 13 자료 -> His teaching method is very good. 찾을 문자열 -> test Not Found!