C언어

[C언어] 문자열 선언&출력하기

인생마린 2017. 5. 28. 21:35
반응형

C언어는 문자열 String이 따로 없기 때문에 캐릭터형 배열인 char a[20]을 선언해주어 사용합니다.


우리 눈에 보이지 않지만 문자열은 항상 구분을 위해 단어가 끝나면\0을 뒤에 저장해줍니다.


C language 라는 문자를 저장할때


C\0

language\0

이런식으로 저장해주죠


그러므로 저장공간을 선언할때는 항상 \0 공백부분도 생각하면서 선언해주셔야됩니다.


문자열을 선언하는 방법은 세가지가 있는데요.


char a[]={'A','B','C',D','\0'}; 이런식으로 쓸경우 컴파일러가 알아서 a[5]로 최적의배열 크기를 정해줍니다.


char b[]="ABCD"; 이 경우도 마찬가지로 a[5]로 최적의 배열을 저장해줍니다. 이게 더 쓰기편하겠죠?


char c[5]="C#"; 우리가 크기를 미리 정해줄수도 있습니다! 'C', '#', '\0' 이 저장되었는데 뒤에 남은 두공간은

어떻게 될까요? 거기에 무슨 값이 들어가도 \0 이후 값은 출력되지 않습니다. \0이 이 단어의 끝이라고 알려주는 신호이기 때문이죠.




그럼 문장을 선언하고 싶으면 어떻게 할까요?


char d[5][10]={"I","love","this","blogger"};

또는

char d[5][10]="I love this blogger";


이런 식으로 이차원 배열로 저장해주시면 각 단어가 저장됩니다~



문자열을 출력하는 방법은?


엄청 간단합니다.

printf("%s", a); %s가 문자열을 출력해주는 아입니다.

%s를 쓰고 배열 이름만 써주면 단어를 출력해주죠~


문장의 경우에는 이차원 배열로 선언 했기 때문에

각 행에 단어들이 저장 되어있으니므로

for(int i;i<length;i++)
printf("%s", a[i]); 

이런식으로 출력해주시면 됩니다.




예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main()
{
    char ch = 'A';
 
    //문자열 선언방법 세가지!
    char java[] = { 'J','A','V','A','\0' };
    printf("%s\n", java);
 
    char c[] = "C language";
 
    printf("%s\n", c);
 
    char csharp[5= "C#";
    printf("%s\n", csharp);
 
    printf("%c %c \n", csharp[0], csharp[0]);
 
    char d[5][10]={"I""love""this""blogger"};
}


결과


반응형