C언어에서 문자열을 사용하기 위해선 배열이 필수적이다.
int aa[4];
aa = {1, 2, 3, 4, 5};
배열을 선언하고 초기화 하지 않으면 각 배열에 아무것도 넣지 않았기 때문에 쓰레기 값이 들어간다.
배열은 for문과 항상 짝지어 다닌다고 보면 된다.
배열의 인덱스는 0부터 시작해서 "전체 길이 - 1 이다."
#include<stdio.h>
void main(){
int aa[100], bb[100];
int i;
for(i = 0; i < 100; i++){
aa[i] = i * 2;
}
for(i = 0; i < 100; i++){
bb[i] = aa[99-i];
}
printf("bb[0]는 %d bb[99]는 %d 입력됨\n", bb[0], bb[99]);
}
배열의 크기를 알아낼 때는 아래와 같은 형식을 사용한다.
배열의 크기(요소 개수) = sizeof(전체 배열 이름) / sizeof(배열의 데이터 형식);
배열의 크기 = sizeof(aa) / sizeof(int);
#include<stdio.h>
void main(){
int aa[] = {10, 20, 30, 40, 50};
int count;
count = sizeof(aa) / sizeof(int);
printf("배열 aa[]의 요소의 개수는 %d 입니다.", count);
}
C언어는 String 데이터 타입을 지원하지 않는다.
C 언어에서의 문자열은 연속된 문자의 문자형 배열이며, 마지막에는 문자열의 끝을 알리는 널문자 \0의 자리를 계산하여 '문자열의 길이 + 1'을 하여 배열을 생성해야 한다.
#include<stdio.h>
void main(){
char ss[8] = "Basic-C"; // 널문자 포함 길이 8
int i;
ss[5] = '#'; // 여섯번째 문자를 바꿈
for(i = 0; i < 8; i++){
printf("ss[%d] ==> %c \n",i, ss[i]);
}
printf("문자열 배열 ss ==>\n",s);
}
C언어에서 문자열 관련 함수를 사용하기 위해서는 string.h 를 포함하는 지시문을 작성해야 한다.
#include<string.h>
#include<stdio.h>
void main(){
char ss[] = "XYZ";
int len;
len = strlen(ss);
printf("문자열 \"%s\"의 길이 ==> %d \n", ss,len);
}
strcpy() 함수는 이미 선언된 문자열 배열에 다른 문자열을 대입하고 싶을 때 주로 사용된다.
#include<stdio.h>
#include<string.h>
void main(){
char ss[4];
strcpy(ss, "XYZ");
printf("문자열 ss의 내용 ==> %s\n", ss);
}
#include<string.h>
#include<stdio.h>
void main(){
char ss[7] = "XYZ";
strcat(ss, "ABC");
printf("이어진 문자열 ss의 내용 ==> %s \n", ss);
}
strcmp() 함수는 두 문자열을 비교해서 같으면 0, 다르면 그 외의 숫자를 돌려준다 (0 이외의 값은 두 문자열의 아스키 코드 값 차이를 나타냄)
#include<string.h>
#include<stdio.h>
void main(){
char ss[] = "XYZ";
char tt[] = "xyz";
int r;
r = strcmp(ss, tt);
printf("두 문자열의 비교 결과 ==> %d \n", r);
}
#include<stdio.h>
void main(){
int gugu[8][9];
for(int i = 0; i < 8; i++){
for(int j = 0; j <9; j++){
gugu[i][j] = (i+2)*(j+1);
}
}
for(int i = 0; i < 9; i++){
for(int j = 0; j < 8; j++){
printf("%d X %d = %d\t", j + 2, i + 1,gugu[j][i]);
}
printf("\n");
}
}