C에서 문자 배열 인쇄

Jinku Hu 2023년10월12일
  1. for 루프를 사용하여 C에서 Char 배열 인쇄
  2. %s 지정자와 함께printf를 사용하여 C에서 Char 배열 인쇄
C에서 문자 배열 인쇄

이 기사에서는 C에서 char 배열을 인쇄하는 방법에 대한 여러 방법을 소개합니다.

for 루프를 사용하여 C에서 Char 배열 인쇄

for 루프는 배열 요소를 개별적으로 인쇄하고 더 자세한 내용으로 출력 형식을 지정하려는 경우 가장 확실한 솔루션입니다. 이 방법의 중요한 전제 조건은 어레이 길이를 미리 알아야한다는 것입니다.

while루프와 같은 다른 반복 방법을 사용할 수 있지만 반복이 중지되어야하는 값을 알아야합니다. 그렇지 않으면 반복이 경계를 벗어나 세그멘테이션 오류를 발생시킵니다.

다음 예에서는 for루프 메서드를 보여주고 6 개의 문자 배열에 대해 정확히 6 번 반복합니다.

#include <stdio.h>
#include <stdlib.h>

#define STR(num) #num

int main(void) {
  char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};

  printf(STR(arr1) ": ");
  for (int i = 0; i < 6; ++i) {
    printf("%c, ", arr1[i]);
  }
  printf("\b\b\n");

  exit(EXIT_SUCCESS);
}

출력:

arr1: a, b, c, d, e, f

%s 지정자와 함께printf를 사용하여 C에서 Char 배열 인쇄

printf 함수는 형식화 된 출력을위한 강력한 함수입니다. 유형 지정자를 사용하여 입력 변수를 조작하고 이에 따라 변수를 처리 할 수 있습니다.

즉,char 배열은 내부적으로 C 스타일 문자열과 동일한 구조를 가지고 있지만 C 스타일 문자열 문자는 항상 끝점을 나타 내기 위해\0바이트로 끝납니다. char 배열 끝에 널 바이트를 추가하면 단일 행printf 호출로 전체 배열을 인쇄 할 수 있습니다.

종료 널 바이트가 지정되지 않고이 메소드 프로그램으로printf가 호출되면 세그먼트 오류가 발생할 가능성이 가장 높은 메모리 영역에 액세스하려고 시도할 수 있습니다.

#include <stdio.h>
#include <stdlib.h>

#define STR(num) #num

int main(void) {
  char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};
  char arr2[] = {'t', 'r', 'n', 'm', 'b', 'v', '\0'};

  printf("%s\n", arr1);
  printf("%s\n", arr2);

  exit(EXIT_SUCCESS);
}

출력:

abcdeftrnmbv
trnmbv

보시다시피 null 종결자가없는arr1을 인쇄하면 반복이 하나의 null 종결자인\0에 도달 할 때까지 더 많은 문자를 얻습니다.

printf 함수를 전문화하는 또 다른 방법은%s 지정자 안에 문자열의 문자 수를 전달하는 것입니다. 이 작업을 수행하는 한 가지 방법은 %s기호 사이의 정수로 문자열 길이를 정적으로 하드 코딩하거나 *기호로 대체하여 printf에서 다른 정수 인수를 가져 오는 것입니다. 매개 변수. 두 방법 모두 숫자 앞에.문자를 포함하거나 지정자에 별표를 포함합니다.

#include <stdio.h>
#include <stdlib.h>

#define STR(num) #num

int main(void) {
  char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};
  char arr2[] = {'t', 'r', 'n', 'm', 'b', 'v', '\0'};

  printf("%.6s\n", arr1);
  printf("%.*s\n", (int)sizeof arr1, arr2);

  exit(EXIT_SUCCESS);
}

출력:

abcdef
trnmbv
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C Array