Language/C C언어 강좌(문자열/make파일 만들기)
  • 728x90
    반응형

     

     

     

    C언어 Chapter 22. 문자열


     

     

    문자열 상수

    • 문자열은 문자형 배열이다.
    • 문자형 상수는 작은따옴표로 표시한다.
    • 문자열 상수는 큰따옴표로 표시한다.

    💡 문자열은 존재하지 않는다. 문자배열이 존재한다.
    집합 관계에서 문자열은 문자 배열에 포함된다.
    문자 상수 : 'a', '3', '%', '+'
    문자열 상수 : "This is a string."

     

    • 문자 상수는 1byte 이다.
    • 문자열은 컴파일러에 의해 자동적으로 맨마지막에 NULL문자('\0')가 들어간다.
    • "This is a string." 문자열 type은 (const char *) 변하지않는 주소값이다.

     

    문자열 상수 "string" 를 넣었을 때 메모리

     

    🔔 예) 문자열의 길이를 알아보는 프로그램

     

    🎯 프로그램 설명

    size = sizeof("string");

    • 문자열 상수의 실제 길이는 끝의 NULL문자가 포함되어 7이된다.
    • string.h 헤더 파일에 포함된 strlen()함수는 문자열의 길이를 세어준다.

     

    결과

     

     

    🔔 예) strlen()함수와 같은 기능을 하는 직접만든 함수

     

    • 중복include를 막은strlen2 함수 선언부 헤더

     

    • obj 파일 생성후 분할 컴파일하여 사용가능.
    • 위 소스의 if문은 0번지 주소에 값을 쓰면 프로그램이 뻗기 때문이다. 그것을 방지하는 코드(주소 0번지는 사용 할 수 없다.)

     

    🔔 예) 문자열 출력시에 NULL('\0')이 없을 때 결과

     

    결과 : NULL이 없으면 NULL을 만날때까지 결과를 출력한다.

    (NULL을 붙이지않으면 어느시점에 만나는지 알 수 없다.)

     

     

     

     

     

    make 파일 만들기

    🔔 예) make file 만드는법

    [중복 include를 막는 소스를 포함한 함수선언 헤더파일]

     

    [스트리밍 문자열 출력 프로그램]

     

    gcc -c test.c 명령으로 test.o 파일 생성

     

    [hexa_view 프로그램]

     

    gcc -c hexa.c 명령으로 hexa.o 파일 생성

     

    • 위 스트리밍 출력 소스와 hexa_view 소스를 아래 명령으로 링크해준다.

    gcc -o main hexa.o test.o 명령으로 main.exe 파일 생성

     

     

     

    [makefile 만들기]

    • make file로 위의 컴파일과정을 간단한 명령으로 실행할수있다.

     

    결과

    make clean : 아래 3개의 파일 삭제

     

    make all :아래 3개파일 생성

    💡 make 명령어로 사용할 경우 makefile의 제일 상위 라벨을 실행한다.

     

     

     

    🔔 예)make file에서 echo 활용법

     

    • echo 명령을 사용하면 문자를 출력 할 수 있다.
    • @를 붙이면 출력을 원하지 않는 문자를 생략해 준다.
    • touch 명령어를 쓰면 소스 수정한 상태를 만들수있다.

    💡 각라벨 all, BEGIN ..등의 아래에 위치한 내용은 TAB으로 들여쓰기 해야 적용된다.
    라벨 이름은 사용자 편의대로 만들 수 있다.

     

    결과

     

    💡 지금까지는 gcc에서의 make였다. 윈도우에서는 nmake가 존재한다.

     

     

     

     

    hexa view로 알아보는 문자열

    • hexa view 를 만들어 출력문과 연결한 프로그램 으로 문자열 설명
      (만드는 방법은 위에 소개되어있음.)

     

    🔔 예) hexa view 에 나타나는 문자열과 printf로 문자열 출력하기

     

    프로그램 설명

    char word[32];

    • hexa view 로 문자열이 char크기로 32byte 주소값안에 문자가 저장되는 것을 알 수 있다.
      (hexa view 에서 오른쪽편이 ASCII로 나타나는 문자열 형태이다.)
    • printf는 문자열로(%s) 출력할때 시작주소부터 NULL을 만날 때 까지 출력한다.
    • 변수*s1~*s3 와 같이 포인터를 사용해서 출력할수도 있다.

    *(word + 5) = ' ';

    *(word + 9) = ' ';

     

    • 위와 같이 NULL('\0')이 들어가는 주소값에 공백을 넣어주면 문자열을 연결하여 printf로 출력할 수 있다.

    결과

     

     

     

     

    728x90
    반응형
상단으로