Page 314 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 314

06  {
                     07    int i = 0;
                     08    c = (char)c;
                     09    while(s[i] != c) {
                     10      if(s[i] == '\0')   /* 검색 실패 */
                     11        return -1;
                     12      i++;
                     13    }
                     14    return i;            /* 검색 성공 */
                     15  }
                     16  int main (void)
                     17  {
                     18    char str[64];       /  * 이 문자열에서 검색 */
                     19    char tmp[64];
                     20    int ch;              /* 검색할 문자 */
                     21    int idx;
                     22
                     23    printf("문자열 : ");
                     24    scanf("%s", str);
                     25
                     26    printf("검색할 문자 : ");
                     27    scanf("%s", tmp);    /* 먼저 문자열로 검색할 문자를 읽어 들입니다. */
                     28    ch = tmp[0];        /* 첫 번째 문자를 검색할 문자로 지정합니다. */
                     29
                     30    if((idx = str_chr(str, ch)) == -1)    /* 처음 나오는 문자를 검색합니다. */
                     31      printf("문자 '%c'은(는) 문자열에 없습니다.\n", ch);
                     32    else
                     33      printf("문자 '%c'은(는) %d번째에 있습니다.\n", ch, idx + 1);
                     34
                     35    return 0;
                     36  }



                   str_chr 함수는 문자열 s에서 문자 c를 선형 검색하                        문자 'R'을 선형 검색합니다.
                                                                            0  1  ❷  3  4  5  6  7  8  9
                   고 검색에 성공하면 찾은 문자의 인덱스를 반환합니                              S U R R O U N D  Ø
                   다. 이때 같은 문자가 여러 개 있는 경우 가장 앞쪽에
                                                                      [그림 8-6] 문자열에서 문자를 검색하는 과정
                   있는 문자의 인덱스를 반환합니다. 검색에 실패할
                   경우 –1을 반환합니다. 그림 8-6은 문자열 "SURROUND"에서 문자 'R'을 검색하는 과정을
                   나타낸 것입니다. 검색에 성공한 str_chr 함수는 찾은 요소의 인덱스 값인 2를 반환합니다.





                   314   C 알고리즘
   309   310   311   312   313   314   315   316   317   318   319