문자열 찾기에 관한 건데요..
지지않는
#include stdio.h
void main()
{
char s[50]={0},l[10]={0},m[10]={0};
int i,j,tmp;
printf(문장을 입력하세요: );
gets(s);
printf(찾을 단어를 입력하세요: );
gets(l);
for(i=0;i50;i++){
if(s[i]==l[i])
l[i]=tmp;
tmp=m[i];
}for(i=0;i10;i++)
printf(%c,m[i]);
}
문장을 입력 받고, 단어를 입력 받아, 문장 속에 단어가 있는지 찾는 것인 데요..
제가 초보라서.. 어제부터 이것만 잡고 있는데.. 잘 안 되네요..
분명 이렇게 하면 될 것 같은데..ㅜ 좀 도와 주세요,,,,
솔직히 이런 건 쉽게 보이는데, 실제로 하다 보니, 생각되로 안 되군요..
기본 적인 개념은 알겠는데, 이렇게 응용하는 부분은 어떻게 접근해야 하는지도 조언 부탁 드립니다~
그럼 오늘도 즐건 하루 되세요~^^
-
앵겨쪼
true/false값만 가지고 체크해도 될 듯 싶으나
구현하신 부분은 m배열이 다른 용도로 필요할 수 있어서 어떤 용도로 필요한지 모르겠지만..
(예를들어 100%일치하는 단어는 아니지만 어느단어까지는 일치하는지 출력하고자 하는 의도일 수도있으니..)
만약 단순히 i에 있는 내용을 그대로 복사하고 싶은 용도라면...
위의 내부 루프에서 루프 돌면서 값이 같지 않을동안 계속 m배열에 i배열 값을 복사하시면 될 듯 합니다.
이때, 완전히 같은 경우만 m배열 -
들찬길
s배열안에 i배열 내용이 있는지 찾는것이라면..
먼저 s배열에서i배열의 첫 단어가 나올때까지 루핑을 돕니다.
그뒤 첫 단어를 만났으면 그때부턴 i배열만큼 루핑을 돕니다.(다른 문자가 나오지 않을때까지)
따라서, 하나의 서브루틴으로 모두 구현하실 것이라면 총 2개의 루프가 필요하겠죠.
제일 외곽루프는 s배열 길이만큼...
내부 루프는 현재 s배열의 인덱스의 문자값이 i배열의 첫 글자와 같은경우에만 실행되는 루프로서
i배열의 길이 만큼만 실행되면 됩니다.