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
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