시작은 미약하였으나 , 그 끝은 창대하리라

제8강 문자열 본문

프로그래밍/C언어

제8강 문자열

애플파ol 2022. 2. 10. 18:03

목차:

*문자열의 정의

*문자열 상수

 * 문자 입출력 라이브러리

 * 문자열 입출력 라이브러리 함수

 * 문자 처리 라이브러리 함수

 * 문자열 수치 변환

 * 문자열의 배열

 

 

1.문자열의 정의

    정의) 문자들이 여러 개 모인 것( 큰 따옴표 사용)으로 char형 배열로 저장되며 마지막에 NULL이 들어감.

           

    NULL문자(\0): 문자여의 끝을 나타낸다.

 

   -> 문자 배열의 초기화      char str[]="abc"    //    str라는 문자열 한칸에 하나씩 a, b, c \0 이 들어감

   -> 문자열의 출력             char str[]="abc"

                                      printf("%s",str)      //    %s= 문자열 형태로 입력함 ,  str자체가 주소여서 &안붙임

 

예제#1
#include<stdio.h>

int main(void)
{
	char str1[] = "the capital city of korea";
	printf("%s",str1);

	return 0;
}

 

->strcpy()  :  문자열을 문자배열에 복사하는 함수

                  ex) strcpy(str_1,str_2);  or  strcpy(str_1,"Hello");

 

#define _CRT_SECURE_NO_WARNINGS    // strcpy 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h>    // strcpy 함수가 선언된 헤더 파일

int main()
{
    char s1[10] = "Hello";    // 크기가 10인 char형 배열을 선언하고 문자열 할당
    char s2[10];              // 크기가 10인 char형 배열을 선언

    strcpy(s2, s1);        // s1의 문자열을 s2로 복사
    
    printf("%s\n", s2);    // Hello

    return 0;
}

2. 문자열 상수

      

       char *p ="HelloWorld";     // 의미 : HelloWorld라는 문자열 상수의 주소를 p에 할당함.

      

#include <stdio.h>

int main()
{
    
    char* p = "HelloWorld";       //HelloWorld라는 주소가 p에할당 됨
    printf("%s\n", p);

    p = "Welcome to C World";     //Welcome to C World라는 주소가 p에할당 됨
    printf("%s\n", p);

    p = "Goodbye";               //Goodbye라는 주소가 p에할당 됨
     printf("%s\n", p);

     return 0;
}

3. 문자 입출력 라이브러리

 

입출력 함수 설명
ch= getchar();
 아래와 동일
scanf("%c",&ch);
하나의 문자를 읽어서 반환함(문자 입력 함수)

putchar(ch);
아래와 동일
printf("%c",ch);
변수 ch에 저장된 문자를 출력함(문자 출력 함수)
getch() 하나의 문자를 읽어서 반환함(버퍼를 사용 안함)
<conio.h>필요
putch() 변수c에 저장된 문자를 출력한다(버퍼를 사용 안함)
<conio.h>필요
scanf("%c",&ch); 하나의 문자를 읽어서 변수ch에 저장함
printf("%c",ch); 변수ch에 저장된 문자를 출력함

 

tip) 버퍼란?  키보드에 입력받은 임시의 값들로, 엔터를 눌러야 프로그램으로 들어감.

#include <stdio.h>
 
int main () {
    char ch;
    
    printf("Enter character: ");
    ch = getchar();
    
    printf("Character entered: ");
    putchar(ch);
    printf("\n");
    return(0);
}


>>>
Enter character: b
Character entered: b

>>>
abc
b

4.문자열 입출력 라이브러리 함수

입출력 함수 설명
scanf("%s",s) 문자열을 읽어서 문자배열 s[]에 저장
print("%s",s) 배열 s[]에 저장되어 있는 문자열을 출력한다.
gets_s(char,int) 한줄의 문자열을 읽어서 문자 배열 s[]에 저장함.
(스페이스도 입력받음)
puts(char) 배열 s[]에 저장되어 있는 한 줄의 문자열을 출력함.
(스페이스도 출력됨)

syntax_ex)   char buf[100];    

                get_s(buf, 100);  

                puts(buf);         

 

#include <Stdio.h>

int main(void)
{
	char name[100];
	char address[100];
	printf("이름을 입력하세요:");
	gets_s(name, 100);
	printf("현재 거주하는 주소를 입력하세요:");
	gets_s(address, 100);
	puts(name);
	puts(address);
	return 0;
}


>>>
이름을 입력하세요:홍길동
현재 거주하는 주소를 입력하세요:서울특별시 강남구
홍길동
서울특별시 강남구

5. 문자 처리 라이브러리 함수  :문자를 검사하거나 문자를 변환한다.

    

//strcpy예시

#include <Stdio.h>

int main(void)
{
	char dst[6];
	char src[6] = "Hello";
	strcpy(dst, src);
	printf(dst);

	return 0;
}

>>>
Hello

6. 문자열 수치 변환

    ->문자열 "36.5"와 수치값 36.5는 다르게 저장됨. (문자열은 하나하나 저장됨,수치값은 통째로 저장됨)

 

버퍼에서 값을 받아옴 역할
sprintf(str,"%f",&v); 문자열을 숫자로 바꿔줌
sscanf(str,"%f",&v); 숫자를 문자열로 바꿔줌

     

#include <Stdio.h>

int main(void)
{
	char s[] = "100";
	int value;

	sscanf_s(s, "%d", &value);  //버퍼로 부터 데이터를 읽어옴 , %d type으로 읽고 value에 값을 할당함.
	printf("%d\n", value);
	

	return 0;
}

>>>
100

7. 문자열의 배열

    (1) 문자열의 배열

 

    (2) 문자 포인터 배열(문자열의 길이가 상관없음으로 효율적으로 쓸 수 있다.)

3개의 원소가 있는데 ,문자의 포인터type이다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	
	int i;
	char fruits[3][20];

	for (i = 0; i < 3; i++) {
		printf("과일 이름을 입력하시오: ", fruits[i]);
		scanf(" % s", fruits[i]);
	}
	for (i = 0; i < 3; i++)
		printf("%d번째 과일: %s \n", i, fruits[i]);

	return 0;
}

'프로그래밍 > C언어' 카테고리의 다른 글

제7강 포인터  (0) 2022.02.10
제6강 배열  (0) 2022.01.07
Comments