CHAPTER 11
STRINGS

[IMAGE: An Quarter-Size Version of The Joy of C Front Cover]
This chapter presents strings, a special type of array of characters. We introduce string constants and variables and examine the close relationship strings have with pointers. We present the standard library functions for manipulating strings and provide array-subscripting and pointer-indexing implementations of several of the more commonly used ones. We also present an implementation of a useful function for reading an input line into a string and rework several of our earlier programs to use it. We conclude with a case study: a program that strips consecutive duplicate lines from its input.

Jump to: [Previous Chapter | Next Chapter]


  1. STRING CONSTANTS
  2. STRING VARIABLES
  3. BUILDING STRINGS FROM THE INPUT
  4. STRING FUNCTIONS FROM THE STANDARD LIBRARY
  5. USING POINTERS TO TRAVERSE STRINGS
  6. CASE STUDY: ELIMINATING DUPLICATE LINES

Objectives


String: An array of characters terminated with the null character '\0'



String data »ç¿ë ¹æ¹ý

1) Character array·Î ó¸®

2) Pointer to character·Î ó¸®


String str1À» str2·Î copyÇÏ´Â function

  • str2 = str1; ==> ÀÌ ¹®Àº ¹®ÀÚ¿­À» º¹»çÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó str1 pointer °ªÀ» str2 pointer º¯¼ö¿¡ ÀúÀåÇÒ »ÓÀÌ´Ù.

    ¹æ¹ý 1)

    ¹æ¹ý 2) while ((*s2 = *s1) != '\0') { s2++; s1++; }

    ¹æ¹ý 3) while ((*s2++ = *s1++) != '\0') ;

    ¹æ¹ý 4) while (*s2++ = *s1++) ;


    String data »ç¿ë ½Ã ÁÖÀÇÇÒ »çÇ×

    1) "hello"¿Í °°Àº string »ó¼ö´Â ¹®ÀÚ¿­ÀÌ ÀúÀåµÈ ¸Þ¸ð¸® ÁּҷΠ󸮵ȴÙ.

    2) StringÀÇ arrayÇü »ç¿ë°ú pointerÇü »ç¿ëÀÇ Â÷À̸¦ ÀνÄÇÑ´Ù

    3) String copy ½Ã target stringÀº original string¿¡ Æ÷ÇÔµÈ ¸ðµç ¹®ÀÚµéÀ» ÀúÀåÇϱâ ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ È®º¸ÇÏ°í ÀÖ¾î¾ß ÇÑ´Ù.

    4) String return ½Ã local º¯¼öó·³ ¼Ò¸êµÇ´Â ¸Þ¸ð¸®¸¦ »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.

    À§ functionÀº ¹®ÀÚ¿­ÀÌ ÀúÀåµÈ ¸Þ¸ð¸® ÁÖ¼Ò¸¸À» returnÇÑ´Ù. ½ÇÁ¦ ¹®ÀÚ¿­ÀÌ ÀúÀåµÈ ¸Þ¸ð¸®´Â function ½ÇÇàÀÌ ³¡³ª¸é ÀÚµ¿ ¼Ò¸êµÇ¾î Àç»ç¿ëµÈ´Ù. ±×·¯¹Ç·Î ÇÁ·Î±×·¥ ½ÇÇà Áß ³»¿ëÀÌ ¹Ù²ð ¼ö ÀÖ´Ù.

    ¿Í °°ÀÌ ¸Þ¸ð¸®¸¦ ÇÒ´ç¹Þ¾Æ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù.


    The ANSI string library

    "string.h"¿¡ prototypeÀÌ Á¤ÀǵǾî ÀÖ´Ù.

    Function±â´É
    strcpy(dst, src)string src¸¦ dst·Î º¹»ç
    strncpy(dst, src, n)ÃÖ´ë n ¹®ÀÚ¸¦ src¿¡¼­ dst·Î º¹»ç
    strcat(dst, src)string dst ÈĹ̿¡ src¸¦ ¿¬°á
    strncat(dst, src, n)ÃÖ´ë n ¹®ÀÚ¸¦ src¿¡¼­ dst ÈĹ̷Π¿¬°á
    strlen(s)string sÀÇ length¸¦ return
    strcmp(s1, s2)µÎ string s1, s2¸¦ ºñ±³
    strncmp(s1, s2, n)ÃÖ´ë n ¹®ÀÚ¸¸ ºñ±³
    strchr(s, ch)string s¿¡ Æ÷ÇÔµÈ Ã¹¹ø° ch ¹®ÀÚ pointer return (or NULL)
    strrchr(s, ch)string s¿¡ Æ÷ÇÔµÈ ¸¶Áö¸· ch ¹®ÀÚ pointer return (or NULL)
    strstr(s1, s2)string s2°¡ s1¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸é ±× ½ÃÀÛ pointer, ¾Æ´Ï¸é NULL return


    String Input/Output

    String ÀÔ·Â

    String Ãâ·Â


    Command-line arguments

  • main functionÀÇ arguments¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥ ½ÃÀÛ ½Ã ƯÁ¤ °ªµéÀ» stringÇüÀ¸·Î Àü´ÞÇÒ ¼ö ÀÖ´Ù.


    ½Ç½À 1) À§ÀÇ IsVowel functionÀ» ±¸ÇöÇÏ¿© command lineÀ¸·Î ÀÔ·ÂµÈ ¹®ÀåÀÇ °¢ ´Ü¾î¿¡¼­ óÀ½ ³ª¿À´Â ¸ðÀ½µéÀ» Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇ϶ó. (Sample Program)

    ½Ç½À 2) ÇÑ ¹®ÀåÀ» ÀÔ·Â¹Þ¾Æ °¢ ´Ü¾î¸¦ °Å²Ù·Î printÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇ϶ó.

    ½ÇÇà ¿¹: I am a girl. ==> I ma a lrig.



    Assignment #9 (±â°£: 1ÁÖÀÏ)

    Ç¥ÁØÀÔ·Â(stdin)À¸·ÎºÎÅÍ ¹®ÀåµéÀ» ÀÔ·Â¹Þ¾Æ ¹®Àå¿¡ »ç¿ëµÈ ´Ü¾î¿Í °¢ ´Ü¾îÀÇ »ç¿ë ºóµµ¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇ϶ó. ´ÙÀ½ ¹®ÀåÀ» ƯÁ¤ file¿¡ ÅؽºÆ® ÇüÀ¸·Î ÀúÀåÇÏ°í ÀÌ fileÀ» input redirection ±â´ÉÀ» ÀÌ¿ëÇÏ¿© ÀÔ·ÂÇÑ´Ù.

    ¿¹) ÀÔ·Â
    Some are born great, some achieve greatness,
    and some have greatness thrust upon them.

    Ãâ·Â

    some : 3
    are : 1
    born : 1
    great : 1
    achieve : 1
    greatness : 2
    and : 1
    have : 1
    thrust : 1
    upon : 1
    them : 1



    [ Table Of Contents | Previous Chapter | Next Chapter]