C 언어
문자 포인터 문자 유형의 주소 또는 문자 배열(문자열)의 첫 번째 문자 주소를 저장합니다. 문자 포인터는 문자열을 조작할 때 매우 유용합니다.
C에는 문자열 데이터 유형이 없습니다. "char" 유형의 배열은 문자열로 간주됩니다. 따라서 char 유형 배열의 포인터는 문자열을 나타냅니다. 이 char 포인터는 문자열 처리를 위한 함수에 인수로 전달될 수 있습니다.
문자 포인터는 문자 또는 문자 배열을 가리킵니다. 따라서 문자 포인터를 선언하려면 다음 구문을 사용하십시오:
char *pointer_name;
문자 포인터를 선언한 후에는 문자 변수의 주소로 초기화해야 합니다. 문자 배열이 있는 경우 문자 배열의 이름이나 첫 번째 요소의 주소를 제공하여 문자 포인터를 초기화할 수 있습니다.
다음은 문자 유형의 문자 포인터를 초기화하는 구문입니다:
char *pointer_name = &char_variable;
다음은 문자 배열(문자열)의 문자 포인터를 초기화하는 구문입니다.
char *pointer_name = char_array; /*or*/ char *pointer_name = &char_array[0];
다음 예에는 두 개의 변수 문자와 문자 배열이 있습니다. 두 개의 포인터 변수를 사용하여 문자 및 문자 배열의 주소를 저장한 다음 문자 포인터를 사용하여 변수의 값을 인쇄합니다.
#include <stdio.h>
int main() {
// Declare two variables
char x = 'P';
char arr[] = "TutorialsPoint";
// Declaring character pointers
char *ptr_x = &x;
char *ptr_arr = arr;
// Printing values
printf("Value of x : %c\n", *ptr_x);
printf("Value of arr: %s\n", ptr_arr);
return 0;
}
코드를 실행하고 출력을 확인하세요 -
Value of x : P Value of arr: TutorialsPoint
문자열은 다음과 같이 배열로 선언됩니다. −
char arr[] = "Hello";
문자열은 NULL로 끝나는 문자 배열입니다. 위 배열의 마지막 요소는 NULL 문자(\0)입니다.
char형 포인터를 선언하고 0번째 위치에 있는 문자의 주소를 할당합니다. −
char *ptr = &arr[0];
배열 이름 자체가 0번째 요소의 주소라는 점을 기억하세요.
char *ptr = arr;
배열 변수 대신 포인터를 사용하여 문자열을 선언할 수 있습니다(대괄호 없음).
char *ptr = "Hello";
이렇게 하면 문자열이 메모리에 저장되고 해당 주소가 ptr에 저장됩니다. ptr을 증가시켜 문자열을 탐색할 수 있습니다.
while(*ptr != '\0'){
printf("%c", *ptr);
ptr++;
}
%s 형식 지정자를 사용하여 문자 배열을 인쇄하는 경우 문자 포인터의 이름을 사용하여 수행할 수 있습니다. 그러나 문자 배열의 각 문자에 액세스하려면 문자 포인터 이름 앞에 별표(*)를 사용한 다음 이를 증가시켜야 합니다.
전체 프로그램 코드는 다음과 같습니다 -
#include <stdio.h>
int main(){
char arr[] = "Character Pointers and Functions in C";
char *ptr = arr;
while(*ptr != '\0'){
printf("%c", *ptr);
ptr++;
}
}
코드를 실행하고 출력을 확인하세요 -
Character Pointers and Functions in C
또는 ptr을 %s 형식으로 printf()에 전달하여 문자열을 인쇄하세요.
#include <stdio.h>
int main(){
char arr[] = "Character Pointers and Functions in C";
char *ptr = arr;
printf("%s", ptr);
}
이 코드를 실행하면 동일한 출력을 얻게 됩니다.
Character Pointers and Functions in C
"string.h" 헤더 파일은 문자열 길이 찾기, 문자열 복사 및 두 문자열 비교와 같은 문자열 처리를 수행하는 여러 라이브러리 함수를 정의합니다. 이 함수는 char 포인터 인수를 사용합니다.
strlen() 함수는 길이, 즉 문자열의 문자 수를 반환합니다. strlen() 함수의 프로토타입은 다음과 같습니다 -
int strlen(char *)
다음 코드는 문자열의 길이를 인쇄하는 방법을 보여줍니다 -
#include <stdio.h>
#include <string.h>
int main(){
char *ptr = "Hello";
printf("Given string: %s \n", ptr);
printf("Length of the string: %d", strlen(ptr));
return 0;
}
이 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Given string: Hello Length of the string: 5
실제로 strlen() 함수는 아래와 같이 사용자 정의 함수 str_len()에 따라 문자열 길이를 계산합니다. −
#include <stdio.h>
#include <string.h>
int str_len(char *);
int main(){
char *ptr = "Welcome to Tutorialspoint";
int length = str_len(ptr);
printf("Given string: %s \n", ptr);
printf("Length of the string: %d", length);
return 0;
}
int str_len(char *ptr){
int i = 0;
while(*ptr != '\0'){
i++;
ptr++;
}
return i;
}
이 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Given string: Welcome to Tutorialspoint Length of the string: 25
할당 연산자( =)는 문자열 값을 문자열 변수(예:char 포인터)에 할당하는 데 사용되지 않습니다. 대신에 다음 프로토타입과 함께 strcpy() 함수를 사용해야 합니다. −
char * strcpy(char * dest, char * source);
다음 예는 strcpy() 함수를 사용하는 방법을 보여줍니다. −
#include <stdio.h>
#include <string.h>
int main(){
char *ptr = "How are you doing?";
char *ptr1;
strcpy(ptr1, ptr);
printf("%s", ptr1);
return 0;
}
strcpy() 함수는 대상 문자열 ptr1에 대한 포인터를 반환합니다.
How are you doing?
내부적으로 strcpy() 함수는 사용자 정의 str_cpy() 함수에서 다음 논리를 구현합니다. −
#include <stdio.h>
#include <string.h>
void str_cpy(char *d, char *s);
int main(){
char *ptr = "Using the strcpy() Function";
char *ptr1;
str_cpy(ptr1, ptr);
printf("%s", ptr1);
return 0;
}
void str_cpy(char *d, char *s){
int i;
for(i = 0; s[i] != '\0'; i++)
d[i] = s[i];
d[i] = '\0';
}
그의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -
Using the strcpy() Function
이 함수는 NULL 문자 "\0"에 도달할 때까지 소스 문자열의 각 문자를 대상으로 복사합니다. 루프 후에 대상 배열 끝에 "\0" 문자를 추가합니다.
일반적인 비교 연산자(<,>, <=,>=, ==및 !=)는 두 문자열을 비교하는 데 사용할 수 없습니다. 대신 "string.h" 헤더 파일의 strcmp() 함수를 사용해야 합니다. 이 함수의 프로토타입은 다음과 같습니다 -
int strcmp(char *str1, char *str2)
strcmp() 함수에는 세 가지 가능한 반환 값이 있습니다 -
다음 예는 C 프로그램에서 strcmp() 함수를 사용하는 방법을 보여줍니다. −
#include <stdio.h>
#include <string.h>
int main(){
char *s1 = "BASK";
char *s2 = "BALL";
int ret = strcmp(s1, s2);
if (ret == 0)
printf("Both strings are identical\n");
else if (ret > 0)
printf("The first string appears after the second string \n");
else
printf("The first string appears before the second string \n");
return 0;
}
코드를 실행하고 출력을 확인하세요 -
The first string appears after the second string
s1을 BACK으로 변경하고 코드를 다시 실행하세요. 이제 다음과 같은 결과가 출력됩니다 -
The first string appears before the second string
다음 코드와 같이 사용자 정의 함수 str_cmp()를 사용하면 유사한 결과를 얻을 수 있습니다. −
#include <stdio.h>
#include <string.h>
int str_cmp(char *str1, char *str2);
int main(){
char *s1 = "The Best C Programming Tutorial Available Online";
char *s2 = "The Best C Programming Tutorial Available Online";
int ret = str_cmp(s1, s2);
if (ret == 0)
printf("Both strings are identical\n");
else if (ret > 0)
printf("The first string appears after the second string\n");
else
printf("The first string appears before the second string\n");
return 0;
}
int str_cmp(char *str1, char *str2) {
while (*str1 != '\0' && *str2 != '\0') {
if (*str1 != *str2) {
return *str1 - *str2;
}
str1++;
str2++;
}
// If both strings are equal, return 0
return 0;
}
이 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Both strings are identical
str_cmp() 함수는 문자열의 문자가 모두 소모되거나 문자가 동일해질 때까지 문자열의 동일한 인덱스에 있는 문자를 비교합니다.
동일한 인덱스에서 동일하지 않은 문자를 감지하는 경우 해당 ASCII 값의 차이를 반환합니다. 루프가 종료되면 "0"을 반환합니다.
C 언어
오늘날에는 CNC 가공의 이점 없이 한때 작동했던 모든 기계처럼 보입니다. 이제 서보 모터와 일종의 프로그래밍 가능 장치로 개조되었습니다. 컨트롤러 또는 컴퓨터. 그렇다면 CNC(컴퓨터 수치 제어) 기계가 현장에 도착하기 전에 부품은 어떻게 만들어졌습니까? 음, 옛날 옛적에, 아니면 50년 전이나 그 이상 전에 트랜지스터는 존재하지 않았습니다. 그러다가 60년대 초에 트랜지스터 라디오는 점점 더 필수품이 되었습니다. 더 작은 장치가 만들어질수록 칩 제조업체, 조립업체, 설계자 등 관련된 모든 당사자가 더 편안해졌습니다. 이것은 P
원래 항공 우주 분야에 중점을 두었던 Sino Polymer(중국 상하이)는 최근 철도 분야에 사용할 수 있는 탄소 섬유 프리프레그용 1액형 난연성 에폭시 수지 시스템을 포함하여 고성능 에폭시 수지 시스템을 개발했습니다. 이 시스템은 무할로겐이라고 하며 낮은 연기 밀도/독성 특성과 긴 저장 수명을 나타냅니다. Sino Polymer는 이 1액형 에폭시 수지 시스템을 사용하여 탄소 섬유(T-300) 프리프레그가 최근 EU EN45545-2 R1 화재 안전 표준 테스트를 통과했으며 가장 높은 난연성 수준인 HL3에 도달했다고 말했습니