[C언어] 문자열 선언&출력하기
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"}; } |
결과