산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 프로그래밍 문자열: 선언, 초기화, 입출력 마스터하기

C 프로그래밍 문자열

이 튜토리얼은 C 문자열의 기초인 선언, 초기화, 입출력, 함수 사용, 포인터, 필수 라이브러리 함수를 안내합니다.

C에서 문자열은 널 바이트 \0로 끝나는 문자 배열입니다. 예:

char c[] = "c string";

컴파일러는 문자열 리터럴에 자동으로 \0을 추가하여 올바른 C 문자열로 만듭니다.

C 프로그래밍 문자열: 선언, 초기화, 입출력 마스터하기

문자열 선언 방법

문자열은 문자 배열로 선언합니다. 예:

char s[5];
C 프로그래밍 문자열: 선언, 초기화, 입출력 마스터하기

이는 최대 4개 문자와 종료 \0을 담을 수 있는 버퍼를 선언합니다.


문자열 초기화 방법

여러 초기화 스타일이 가능합니다:

char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};
C 프로그래밍 문자열: 선언, 초기화, 입출력 마스터하기

버퍼 오버플로 주의: char c[5] = "abcde";는 6개 문자(\0 포함)를 5바이트 배열에 저장하려 하므로 피해야 합니다.


문자열에 값 할당하기

배열은 선언 후 대입할 수 없습니다. 대신 strcpy()를 사용하세요:

char c[100];
strcpy(c, "C programming");

참고: c = "C programming"; 같은 직접 대입은 컴파일 에러를 유발합니다.


사용자로부터 문자열 읽기

공백으로 구분된 입력에는 scanf()를 사용하세요:

#include <stdio.h>
int main() {
    char name[20];
    printf("이름 입력: ");
    scanf("%s", name);
    printf("당신의 이름은 %s입니다.", name);
    return 0;
}

출력

이름 입력: Dennis Ritchie
당신의 이름은 Dennis입니다.

scanf()는 공백에서 멈추므로 첫 단어만 읽습니다. 배열 이름이 포인터로 변환되므로 name을 직접 전달합니다.

한 줄 전체를 읽으려면?

fgets()와 puts()를 사용하세요:

#include <stdio.h>
int main() {
    char name[30];
    printf("이름 입력: ");
    fgets(name, sizeof(name), stdin);
    printf("이름: ");
    puts(name);
    return 0;
}

출력

이름 입력: Tom Hanks
이름: Tom Hanks

fgets()는 공백을 포함하여 sizeof(name)-1 문자까지 읽습니다. 끝에 개행 문자를 유지하며 puts()가 이를 출력합니다.

참고: gets()는 버퍼 오버플로를 일으킬 수 있어 C 표준에서 폐지되고 제거되었습니다.


함수에 문자열 전달하기

문자열은 배열처럼 함수에 전달됩니다. 예:

#include <stdio.h>
void displayString(char str[]);
int main() {
    char str[50];
    printf("문자열 입력: ");
    fgets(str, sizeof(str), stdin);
    displayString(str);
    return 0;
}
void displayString(char str[]) {
    printf("문자열 출력: ");
    puts(str);
}

문자열과 포인터

문자열 이름은 포인터로 변환되어 포인터 연산이 가능합니다:

#include <stdio.h>
int main(void) {
    char name[] = "Harry Potter";
    printf("%c", *name); // H
    printf("%c", *(name+1)); // a
    printf("%c", *(name+7)); // o
    char *namePtr = name;
    printf("%c", *namePtr); // H
    printf("%c", *(namePtr+1)); // a
    printf("%c", *(namePtr+7)); // o
}

자주 사용하는 문자열 함수

C 언어

  1. C# 문자열(String) 마스터: 기초, 연산, 고급 기법 총정리
  2. C# 네임스페이스 마스터하기: 구성, 범위, 모범 사례
  3. C++ 배열을 함수에 전달하는 방법: 실전 가이드
  4. Java String 마스터하기: 생성, 메서드, 모범 사례
  5. Java Enum 문자열 표현 마스터: 기본값, 오버라이딩, 고급 패턴
  6. C++ 문자열 함수 마스터: strcpy, strcat, strlen, strcmp 실전 예제
  7. C 문자열 완전 정복: 선언, 입출력, 라이브러리 함수
  8. Python 문자열 연산 마스터하기: replace, join, split, reverse, 대소문자 변환
  9. C 프로그래밍 입문: 시스템 프로그래밍의 기초 다지기
  10. Java Strings 클래스: 문자열 생성 및 조작 마스터하기