C언어 - 문자열을 다루는 배열

 

문자열의 배열을 2차원 배열로 구성해본다

 

예제

 

#include <stdio.h>
#include <string.h>
#define MAXSTD    5
#define NAMELEN    15
int main(){
   int i, yes = 0;
   char name[NAMELEN];
   char student[MAXSTD][NAMELEN] = {"Michael Bolton", "Richard Marx", "Ricky Martin", "Celine Dion", "Cutting     Crew"};
   for(i = 0;  i < MAXSTD; i++){
       printf("%p \t%s\n", student[i], student[i]);   
   }
   printf("Enter student name : ");
   gets(name);

   //student[i]는 각 이름의 주소를 가지고 있다
   for(i=0; i < MAXSTD; i++){
       if(strcmp (student[i], name) == 0) yes = 1;
   }
   if(yes){
       printf("YES, %s is a student in CS department\n",name);
   }else{
       printF("NO %s is not a student in CS department\n",name);
   }
}

 

이 프로그램 에서는 2차원 배열을 이용하여 문자열의 배열을 만들었다. 선언에서 초기화된 배열 student의 메모리 할당과 값은 다음과 같다

 

 

 

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

student[0]

1000

M

i

c

h

a

e

l

 

B

o

l

t

o

n

\0

student[1]

1015

R

i

c

h

a

r

d

 

M

a

r

x

\0

 

 

student[2]

1030

R

i

c

k

y

 

M

a

r

t

i

n

\0

 

 

student[3]

1045

C

e

l

i

n

e

 

D

i

o

n

\n

 

 

 

student[4]

1060

C

u

t

t

i

n

g

 

C

r

e

w

\0