코딩공부

문자열에 관한 고찰(1) 본문

Language/C언어

문자열에 관한 고찰(1)

초보코더 2017. 10. 8. 16:32
반응형

오늘은 문자열에 관해 공부를 해봤다! 여태 해야지 해야지 하고 제대로 안해놔서...ㅎㅎ... 이제 좀 해야할거같아서 건드려봤다. 근데 함수를 다 외우려면 이래저래 시간이 꽤 필요할 듯 싶다! 어쩔수없징... 그래서 오늘 해본건 왜 그 비밀번호 바꾸거나 설정할때 아이디랑 똑같은 단어가 4자리 이상 들어가거나 하면 안되고 그런거 있짜나... 그걸 해보려고 한다. 나중에 좀 더 어렵게 가면 가입하는것까지 아예 구현해보려고 한다. 이름, 생년월일, 아이디를 입력시킨 다음에 생일이 비밀번호에 들어가도 안되고 아이디랑 몇자리이상 같은 단어가 있으면 안되고 그런거... 일단 오늘은 단순한 것 부터!


방식은 두개의 문자열을 입력 받은 뒤 4자리이상 연속되는 문자가 서로 다른 문자열에 있으면 이럼안돼요~ 라고 출력하는 방식이다. 문제가 없으면 잘됐음! 이라고 하고. 코드를 보자!


#include <stdio.h>

#include <string.h>


int main(void)

{

char str1[100] = { 0, };

char str2[100] = { 0, };

char temp[5] = { 0, };

char *p;


printf("두개의 문자열을 순서대로 입력하시오 \n 첫번째 : ");

gets_s(str1,sizeof(str1));

printf("두번째 : ");

gets_s(str2,sizeof(str2));


for (unsigned int i = 0; i < strlen(str1) - 3; i++)

{

memmove(temp, str1 + i, 4);

if ((p=strstr(str2, temp)) != NULL)

{

printf("같은게 존재");

return 0;

}

}

printf("같은게 안존재");


return 0;

}


생각보다 쉽게 성공했다! 음... 설명을 하자면 밑에 보이는 배열을 str1이라고 생각하고

이 배열의 첫번째 4개짜리 문자열인 abcd를 temp에 넣어주고 strstr함수를 이용해서 str2에 abcd가 있는지 확인하고 없으면 strstr함수는 NULL을 반환하기 때문에 !=NULL을 이용해서 없으면 그 다음 bcde를 temp에 넣어주고 확인, 그다음엔 cdef를 확인... 이런식으로 반복한다. 그러다 보면 같은 부분이 있으면 알려줄테니까! 그렇게 for문을 i<strlen(str1)-3을 해줘서 마지막까지 전부 확인해 준다! 이번에는 좀 쉽게 된거 같아서 기부니가 좋다!!! 내일부턴 또 학과공부 해야해서 코딩할 시간이 많을지...흑흑... 아 K.N.K 책을 샀다! 배송오면 공부 시작하고 후기 남길테니까 괜찮으면 다들 사서 봤으면 좋겠따!!! 오늘은 9럼 20000.

반응형

'Language > C언어' 카테고리의 다른 글

Palindromic 수 찾기  (0) 2017.10.01
2차원 배열과 포인터에 대해 Araboza  (0) 2017.09.26
Scanf와 &  (2) 2017.09.07
Visual Studio의 scanf와 scanf_s  (0) 2017.09.05