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

C의 문자열:변수 선언 방법, 초기화, 인쇄, 예제

C에서 문자열이란 무엇입니까?

C의 문자열 선형 시퀀스의 문자 모음일 뿐입니다. 'C'는 공백을 포함하더라도 문자열을 항상 단일 데이터로 취급합니다. 단일 문자는 작은따옴표 표현을 사용하여 정의됩니다. 문자열은 큰따옴표를 사용하여 표시됩니다.

Example, "Welcome to the world of programming!"

'C'는 C의 문자열에서 복잡한 작업을 쉽게 수행하는 데 사용할 수 있는 많은 기능을 포함하는 표준 라이브러리 를 제공합니다.

이 튜토리얼에서는 배우게 될 것입니다-

C에서 문자열을 선언하고 초기화하는 방법

C 문자열은 char를 데이터 유형으로 사용하는 간단한 배열입니다. 'C' 언어는 문자열을 데이터 유형으로 직접 지원하지 않습니다. 따라서 C에서 String을 표시하려면 문자 배열을 사용해야 합니다.

C에서 변수를 String으로 선언하는 일반적인 구문은 다음과 같습니다.

char string_variable_name [array_size];

고전적인 문자열 선언은 다음과 같이 수행할 수 있습니다.

 char string_name[string_length] = "string";

배열의 크기는 C에서 문자열 변수 내부에 얼마나 많은 문자가 저장될 것인지 계산하는 데 사용되기 때문에 C 문자열 변수를 선언할 때 정의해야 합니다. 문자열 선언의 몇 가지 유효한 예는 다음과 같습니다.

char first_name[15];    //declaration of a string variable
char last_name[15];

위의 예는 배열 크기가 15인 문자열 변수를 나타냅니다. 이는 주어진 C 문자열 배열이 최대 15자를 보유할 수 있음을 의미합니다. 배열의 인덱싱은 0부터 시작하므로 0-14 위치의 문자를 저장합니다. C 컴파일러는 생성된 문자 배열에 NULL 문자 '\0'을 자동으로 추가합니다.

C에서 문자열 초기화를 연구합시다. 다음 예제는 C에서 문자열 초기화를 보여줍니다.

char first_name[15] = "ANTHONY";
char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declaration
char string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */
char string2 [ ] = "world";  /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */
char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/

string3에서 NULL 문자를 명시적으로 추가해야 하며 문자는 작은따옴표로 묶습니다.

'C'를 사용하면 문자 배열의 크기를 정의하지 않고도 문자열 변수를 초기화할 수 있습니다. 다음과 같은 방법으로 수행할 수 있습니다.

char first_name[ ] = "NATHAN";

C에서 문자열 이름은 기본적으로 배열이기 때문에 포인터 역할을 합니다.

문자열 입력:문자열 읽기

사용자에게 입력을 요청하는 대화형 프로그램을 작성할 때 C는 사용자로부터 입력된 텍스트 줄을 찾기 위해 scanf(), gets() 및 fgets() 함수를 제공합니다.

scanf()를 사용하여 읽을 때 배열 이름이 포인터 역할을 하기 때문에 변수 주소에 액세스하기 위해 "&"를 사용하지 않고 "%s" 형식 지정자를 사용합니다. 예:

#include <stdio.h>
int main() {
char name[10];
int age;
printf("Enter your first name and age: \n");
scanf("%s %d", name, &age); 
printf("You entered: %s %d",name,age);
}

출력:

Enter your first name and age:
John_Smith 48

scanf 함수의 문제는 C에서 전체 문자열을 읽지 않는다는 것입니다. 공백, 양식 피드, 세로 탭, 줄 바꿈 또는 캐리지 리턴이 발생하는 즉시 읽기 프로세스를 중지합니다. "Guru99 Tutorials"로 입력을 제공한다고 가정하면 scanf 함수는 두 이름 사이에 공백 문자가 발생하기 때문에 전체 문자열을 읽지 않습니다. scanf 함수는 Guru99만 읽습니다.

공백이 포함된 문자열을 읽기 위해 gets() 함수를 사용합니다. Get은 공백을 무시합니다. 줄 바꿈에 도달하면 읽기를 중지합니다(Enter 키를 눌렀을 때). 예:

#include <stdio.h>
int main() {
char full_name[25];
printf("Enter your full name: ");
gets(full_name);
printf("My full name is %s ",full_name);
return 0;
}

출력:

Enter your full name: Dennis Ritchie
My full name is Dennis Ritchie

gets()에 대한 또 다른 안전한 대안은 지정된 수의 문자를 읽는 fgets() 함수입니다. 예:

#include <stdio.h>
int main() {
char name[10];
printf("Enter your  name plz: ");
fgets(name, 10, stdin);
printf("My name is %s ",name);
return 0;}

출력:

Enter your name plz: Carlos
My name is Carlos

fgets() 인수는 다음과 같습니다.

문자열 출력:문자열 인쇄/표시

표준 printf 함수는 출력 장치에서 C의 문자열을 인쇄하거나 표시하는 데 사용됩니다. 사용된 형식 지정자는 %s

입니다.

예,

printf("%s", name);

문자열 출력은 fputs() 및 printf() 함수로 수행됩니다.

fputs() 함수

fputs()는 문자열의 이름과 텍스트를 표시할 위치에 대한 포인터가 필요합니다. 화면에 인쇄하기 위해 표준 출력을 참조하는 stdout을 사용합니다. 예:

#include <stdio.h>
int main()
{char town[40];
  printf("Enter your town: ");
  gets(town);
  fputs(town, stdout);
  return 0;}

출력:

Enter your town: New York
New York

풋 기능

puts 함수는 출력 장치에서 C의 문자열을 인쇄하고 커서를 다시 첫 번째 위치로 이동하는 데 사용됩니다. puts 함수는 다음과 같은 방식으로 사용할 수 있습니다.

#include <stdio.h>
int main() {
char name[15];
gets(name);        //reads a string
puts(name);        //displays a string
return 0;}

이 함수의 구문은 다른 함수에 비해 비교적 간단합니다.

문자열 라이브러리

표준 'C' 라이브러리는 프로그램 내에서 문자열을 조작하는 다양한 기능을 제공합니다. 이러한 함수는 문자열 핸들러라고도 합니다. 이 모든 핸들러는 헤더 파일에 있습니다.

기능 목적 strlen() 이 함수는 문자열의 길이를 찾는 데 사용됩니다. NULL 문자를 제외한 문자열에 존재하는 문자의 수를 반환합니다.strcat(str1, str2) 이 함수는 두 개의 문자열을 결합하여 단일 문자열을 형성하는 데 사용됩니다. str1의 끝에 str2를 추가하거나 연결하고 str1에 대한 포인터를 반환합니다.strcmp(str1, str2) 이 함수는 두 문자열을 서로 비교하는 데 사용됩니다. str1이 str2와 같으면 0을 반환하고, str1 str2이면 0보다 큰 값을 반환합니다.

문자열 라이브러리 기능을 보여주는 아래 프로그램을 고려해 보겠습니다.

#include <stdio.h>
#include <string.h>
int main () {
//string initialization
char string1[15]="Hello";
char string2[15]=" World!";
char string3[15];
int val;

//string comparison
val= strcmp(string1,string2);
if(val==0){
    printf("Strings are equal\n");
}
else{
    printf("Strings are not equal\n");
}

//string concatenation
printf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!

//string length
printf("\nLength of first string:%d",strlen(string1));
printf("\nLength of second string:%d",strlen(string2));

//string copy
printf("\nCopied string is:%s\n",strcpy(string3,string1));  //string1 is copied into string3
return 0;
}

출력:

Strings are not equal
Concatenated string:Hello World!
Length of first string:12
Length of second string:7
Copied string is:Hello World!

기타 중요한 라이브러리 기능은 다음과 같습니다.

  • strncmp(str1, str2, n) :str1의 처음 n개 문자가 str2의 처음 n개 문자와 같으면 0을 반환하고, str1 str2이면 0보다 큰 값을 반환합니다.
  • strncpy(str1, str2, n) 이 함수는 다른 문자열에서 문자열을 복사하는 데 사용됩니다. str2의 처음 n자를 str1에 복사합니다.
  • strchr(str1, c):str1에서 char c의 첫 번째 발생에 대한 포인터를 반환하거나 문자를 찾을 수 없는 경우 NULL을 반환합니다.
  • strrchr(str1, c):str1을 역으로 검색하여 str1에서 char c의 위치에 대한 포인터를 반환하거나 문자가 없으면 NULL을 반환합니다.
  • strstr(str1, str2):str1에서 str2가 처음 나타나는 포인터를 반환하거나 str2가 없으면 NULL을 반환합니다.
  • strncat(str1, str2, n) str2의 처음 n개 문자를 str1 끝에 추가(연결)하고 str1에 대한 포인터를 반환합니다.
  • strlwr() :문자열을 소문자로 변환
  • strupr() :문자열을 대문자로 변환
  • strrev() :문자열 반전

문자열을 숫자로 변환

C 프로그래밍에서는 런타임 오류를 방지하기 위해 숫자 문자열을 숫자 값으로 변환할 수 있습니다. stdio.h 라이브러리에는 문자열을 숫자로 변환하는 다음 함수가 포함되어 있습니다.

  • int atoi(str) ASCII에서 정수로; str을 동등한 int 값으로 변환합니다. 첫 번째 문자가 숫자가 아니거나 숫자가 없으면 0이 반환됩니다.
  • double atof(str) 부동 소수점 ASCII를 나타내며 str을 동등한 double 값으로 변환합니다. 첫 번째 문자가 숫자가 아니거나 숫자가 없으면 0.0이 반환됩니다.
  • long int atol(str) ASCII를 long int로, str을 해당하는 long 정수 값으로 변환합니다. 첫 번째 문자가 숫자가 아니거나 숫자가 없으면 0이 반환됩니다.

다음 프로그램은 atoi() 함수를 보여줍니다:

#include <stdio.h>
int main()
{char *string_id[10];
  int ID;
  printf("Enter a number: ");
  gets(string_id);
  ID = atoi(string_id);
   printf("you enter %d  ",ID);
  return 0;}

출력:

Enter a number: 221348
you enter 221348
  • char *string ="language"와 같은 문자열 포인터 선언은 상수이며 수정할 수 없습니다.

요약

  • 문자열은 문자 배열에 저장된 일련의 문자입니다.
  • 문자열은 큰따옴표로 묶인 텍스트입니다.
  • 'd'와 같은 문자는 문자열이 아니며 작은따옴표로 표시됩니다.
  • 'C'는 프로그램에서 문자열을 조작하기 위한 표준 라이브러리 함수를 제공합니다. 문자열 조작자는 헤더 파일에 저장됩니다.
  • 문자열은 프로그램에 사용하기 전에 선언하거나 초기화해야 합니다.
  • 다양한 입력 및 출력 문자열 함수가 있으며 각각 기능이 있습니다.
  • 해당 기능을 사용할 수 있도록 문자열 라이브러리를 포함하는 것을 잊지 마세요.
  • 우리는 코딩 및 디코딩 프로세스에 매우 유용한 atoi(), atof() 및 atol()을 통해 문자열을 숫자로 변환할 수 있습니다.
  • C에서 문자열 배열을 정의하여 다양한 문자열을 조작할 수 있습니다.

C 언어

  1. 자바 문자열
  2. 자바 열거형 문자열
  3. VHDL에서 문자열 목록을 만드는 방법
  4. C++의 배열 | 선언 | 초기화 | 배열 예제에 대한 포인터
  5. C++ 문자열:strcpy(), strcat(), strlen(), strcmp() 예
  6. C 라이브러리의 realloc() 함수:어떻게 사용합니까? 구문 및 예
  7. C 라이브러리의 free() 함수:어떻게 사용합니까? 예제로 배우기
  8. Java의 String Length() 메서드:예제로 찾는 방법
  9. Python 문자열:바꾸기, 결합, 분할, 반전, 대문자 및 소문자
  10. 자바 - 문자열 클래스