못정함
C언어) 8-2장: 문자를 저장하는 배열 본문
-배열이 단어를 저장하기 위한 가장 좋은 방법임
저장할 문자열의 길이보다 최소한 하나 이상 크게 배열을 선언해야함
nul문자 (\0) 를 저장하기 때문임
*nul문자는 상당히 중요함. 문자열의 끝을 표시한다.
<선언, 초기화>
char str[80];
str[0] = 'a';
str[0] = 'p';
str[0] = 'p';
str[0] = 'l';
str[0] = 'e';
str[0] = 'j';
str[0] = 'a';
str[0] = 'm';
str[0] = '0' // 하나하나 넣을 거면 반드시 널 문자 넣어줘야함!!!!!!!!!!!!!!!!!!!!!!!!!!
이렇게 넣든
char str[80] = "applejam";
이렇게 넣든
둘 다
아래처럼 저장됨
a | p | p | l | e | j | a | m | \0 |
#include <stdio.h>
int main(void)
{
char str[80] = "applejam";
printf("initial string: %s\n", str);
printf("insert string: ");
scanf("%s", str); //string 입력받을 땐 '&'안 쓴다
printf("string after insert: %s\n", str);
return 0;
}
*null문자의 중요성
- grape로 입력 값 덮을 때 \0이 없을 경우를 상상해보자 끔찍하다
- \0 덕분에 grape만 깔끔하게 출력되는 것이다
초기값)
a | p | p | l | e | j | a | m | \0 | \0 |
입력후)
g | r | a | p | e | /0 | a | m | \0 | \0 |
**주의**
-배열의 크기는 넉넉하게
-배열 요소의 개수는 최소한 '문자열 길이 +1' 이어야함. \0를 위하여
<문자열 대입> : 대입 연산자 사용X // 'strcpy' 함수 사용.
-초기화 이후에 새로운 문자열 저장하고 싶으면 'strcpy' (stringcopy) 함수를 사용
-char형 배열에 새로운 만자열을 저장하는 함수. 저장할 문자열의 길이를 파악해 딱 그 길이만큼만 char형 배열에 문자열을 복사하고, 널문자도 자동으로 붙여줌
/*반드시 헤더 파일 포함시키기*/
#include <string.h>
<사용법> strcpy (저장될 배열명, 저장할 문자열) |
*저장할 문자열(두번째 인수)에는 char형 배열의 배열명도 사용 가능
-오른쪽 값을 왼쪽 변수에 대입하는 연산으로 생각하면 쉬움.
-첫 번째 인수에는 문자열 상수 사용 불가
#include <stdio.h>
#include <string.h> // strcpy 함수 사용을 위해 반드시 써줘야함
int main(void)
{
char str1[80] = "cat";
char str2[80];
strcpy(str1, "tiger"); // str1 배열에 "tiger" 복사
strcpy(str2, str1); // str2 배열에 str1 배열의 문자열을 복사
printf("%s, %s\n", str1, str2);
return 0;
}
<문자열 전용 입출력 함수: gets, puts>
-문자열 입출력 시에는 printf(); 말고 gets, puts 사용하자
gets | -빈칸 포함, 한 줄 전체를 문자열로 입력 -enter를 누르기 전까지 전체를 하나의 문자열로 배열에 저장함 -마지막에 null문자 붙여줌 -입력한 배열의 크기를 검사하지 않음. 항상 배열의 크기를 스스로 고려해야한다. |
gets(char형 배열명); |
puts | -문자열 출력 함수 -문자열 출력 후 자동으로 줄바꿈을 해줌 |
puts(char 형 배열명); or puts(“내가 쓰고 싶은 말 쓰기”); |
#include <stdio.h>
int main(void)
{
char str[80];
/*문자열 입력 gets*/
printf("Insert string: ");
gets(str); // 빈칸을 포함한 문자열 입력
/*문자열 출력 puts*/
puts("Inserted string: "); //문자열 상수 출력
puts(str); // 배열에 저장된 문자열 출력
}
'C언어 공부 > C언어 독학 (교재)' 카테고리의 다른 글
C언어) 9-2. 포인터 완전 정복을 위한 포인터 이해하기 (1) | 2024.10.09 |
---|---|
C언어) 9-1 포인터의 개념 (0) | 2024.10.09 |
C언어) 7-2장: 여러 가지 함수 유형 (0) | 2024.09.16 |
C언어) 7-1장: 함수의 작성과 사용 (0) | 2024.09.15 |
C언어) 6장: 반복문 (0) | 2024.09.15 |