* 문자열의 배열 - 문자열 테이블(string table)
* char names[10][40] - 10개의 문자열을 포함할수 있는 테이블을 지정하며,
각 문자열은 널문자를 포함하여 40개까지의 문자를 갖는다.
- 테이블내의 문자열을 접근하려면,
첫번째 색인만 지정해주면 된다.
* 문자열 저장 - gets(names[2]);
* 문자열 출력 - printf(names[0]);
p.189_1
#include <stdio.h>
int main(void)
{
char text[10][80];
int i;
for(i=0; i<10; i++) {
printf("%d: ", i+1);
gets(text[i]);
}
do {
printf("Enter number of string (1-10) : ");
scanf("%d", &i);
i--;
if(i>=0 && i<=9) printf("%s\n", text[i]);
} while(i>=0);
return 0;
}
p.190_2
#include <stdio.h>
#include <string.h>
char words[][2][40] = {
"dog", "Hund",
"no", "nein",
"year", "Jahr",
"child", "Kind",
"I", "Ich",
"drive", "fahren",
"house", "Haus",
"to", "zu",
" ", " "
};
int main(void)
{
char english[80];
int i;
printf("Enter English woed: ");
gets(english);
i = 0;
while(strcmp(words[i][0], " ")) {
if(!strcmp(english, words[i][0])) {
printf("German translation: %s", words[i][1]);
break;
}
i++;
}
if(!strcmp(words[i][0], " ")) printf("Not in dictionary\n");
return 0;
}
p.191_3
#include <stdio.h>
int main(void)
{
char text[][80] = {
"when", "in", "the",
"course", "of", "human",
"events", ""
};
int i, j;
for(i=0; text[i][0]; i++) {
for(j=0; text[i][j]; j++) printf("%c", text[i][j]);
printf(" ");
}
return 0;
}
p.191_연습1
#include <stdio.h>
#include <conio.h>
int main(void)
{
char words[10][80] = {"hi", "when", "in", "the", "of",
"human", "events", "dog", "Hund", "no"}; //배열의 초기화
char ch;
while(1) {
printf("Enter number of string (0-9) quit is 'q': ");
ch = getche();
if(ch == 'q') break; //q를 누르면 종료한다
ch = ch - '0'; //문자형 '1'은 아스키코드값 49이므로
'0'(48)을 빼서 정수형1이 되도록 한다.
if(ch>=0 && ch<=9) printf("\nword is %s\n", words[ch]);
}
printf("\n\n");
return 0;
}