C 언어
이 자습서에서는 C 프로그래밍의 문자열에 대해 배웁니다. 예제를 통해 선언하고 초기화하고 다양한 I/O 작업에 사용하는 방법을 배웁니다.
C 프로그래밍에서 문자열은 null 문자로 끝나는 일련의 문자입니다. \0
. 예:
char c[] = "c string";
컴파일러가 큰따옴표로 묶인 일련의 문자를 발견하면 null 문자 \0
를 추가합니다. 기본적으로 끝에 있습니다.
다음은 문자열을 선언하는 방법입니다.
char s[5];
<그림> 여기에서 5자의 문자열을 선언했습니다.
<시간>다양한 방법으로 문자열을 초기화할 수 있습니다.
char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};
<그림>
다른 예를 들어보겠습니다.
char c[5] = "abcde";
여기서는 6개의 문자를 할당하려고 합니다(마지막 문자는 '\0'
)를 char
로 5개의 문자를 갖는 배열. 이것은 좋지 않으며 절대 해서는 안 됩니다.
배열과 문자열은 C에서 2급 시민입니다. 일단 선언되면 할당 연산자를 지원하지 않습니다. 예를 들어,
char c[100];
c = "C programming"; // Error! array type is not assignable.
참고: 대신 strcpy() 함수를 사용하여 문자열을 복사합니다.
<시간>
scanf()
을(를) 사용할 수 있습니다. 문자열을 읽는 함수입니다.
scanf()
함수는 공백(공백, 줄 바꿈, 탭 등)을 만날 때까지 일련의 문자를 읽습니다.
#include <stdio.h>
int main()
{
char name[20];
printf("Enter name: ");
scanf("%s", name);
printf("Your name is %s.", name);
return 0;
}
출력
Enter name: Dennis Ritchie Your name is Dennis.
데니스 리치 위의 프로그램에 "Dennis"만 입력되었습니다. name에 저장되었습니다. 끈. Dennis 뒤에 공백이 있었기 때문입니다. .
또한 name 코드를 사용했습니다. &name
대신 scanf()
사용 .
scanf("%s", name);
name 때문입니다. char
입니다. 배열이며 배열 이름이 C의 포인터로 소멸된다는 것을 알고 있습니다.
따라서 이름 scanf()
에서 이미 문자열에서 첫 번째 요소의 주소를 가리키므로 &
을 사용할 필요가 없습니다. .
fgets()
를 사용할 수 있습니다. 문자열의 한 줄을 읽는 함수. 그리고 puts()
을 사용할 수 있습니다. 문자열을 표시합니다.
#include <stdio.h>
int main()
{
char name[30];
printf("Enter name: ");
fgets(name, sizeof(name), stdin); // read string
printf("Name: ");
puts(name); // display string
return 0;
}
출력
Enter name: Tom Hanks Name: Tom Hanks
여기에서는 fgets()
을 사용했습니다. 사용자로부터 문자열을 읽어오는 함수입니다.
fgets(name, sizeof(name), stdlin); // read string
sizeof(name)
결과는 30입니다. 따라서 최대 30자를 입력으로 사용할 수 있으며 이는 name의 크기입니다. 문자열.
문자열을 인쇄하기 위해 puts(name);
을 사용했습니다. .
참고: gets()
함수는 사용자로부터 입력을 받을 수도 있습니다. 그러나 C 표준에서는 제거되었습니다.
gets()
때문입니다. 모든 길이의 문자를 입력할 수 있습니다. 따라서 버퍼 오버플로가 발생할 수 있습니다.
문자열은 배열과 유사한 방식으로 함수에 전달할 수 있습니다. 함수에 배열을 전달하는 방법에 대해 자세히 알아보세요.
<시간>
#include <stdio.h>
void displayString(char str[]);
int main()
{
char str[50];
printf("Enter string: ");
fgets(str, sizeof(str), stdin);
displayString(str); // Passing string to a function.
return 0;
}
void displayString(char str[])
{
printf("String Output: ");
puts(str);
}
<시간> 배열과 유사하게 문자열 이름은 포인터에 대해 "소멸"됩니다. 따라서 포인터를 사용하여 문자열의 요소를 조작할 수 있습니다. 이 예제를 확인하기 전에 C 배열 및 포인터를 확인하는 것이 좋습니다.
<시간>
#include <stdio.h>
int main(void) {
char name[] = "Harry Potter";
printf("%c", *name); // Output: H
printf("%c", *(name+1)); // Output: a
printf("%c", *(name+7)); // Output: o
char *namePtr;
namePtr = name;
printf("%c", *namePtr); // Output: H
printf("%c", *(namePtr+1)); // Output: a
printf("%c", *(namePtr+7)); // Output: o
}
<시간> C 언어
C++는 다음 두 가지 유형의 문자열 표현을 제공합니다. - C 스타일 문자열입니다. 표준 C++에 도입된 문자열 클래스 유형입니다. C 스타일 문자열 C 스타일 문자열은 C 언어에서 시작되었으며 C++ 내에서 계속 지원됩니다. 이 문자열은 실제로 null로 끝나는 1차원 문자 배열입니다. 문자 \0. 따라서 null로 끝나는 문자열은 null 뒤에 오는 문자열을 구성하는 문자를 포함합니다. . 다음 선언 및 초기화는 Hello라는 단어로 구성된 문자열을 생성합니다. 배열의 끝에 널 문자를 유지하려면 문자열을 포함하는 문자
CGI란 무엇입니까? CGI(Common Gateway Interface)는 웹 서버와 사용자 정의 스크립트 간에 정보가 교환되는 방식을 정의하는 일련의 표준입니다. CGI 사양은 현재 NCSA에서 유지 관리하며 NCSA는 CGI를 다음과 같이 정의합니다. - CGI(Common Gateway Interface)는 외부 게이트웨이 프로그램이 HTTP 서버와 같은 정보 서버와 인터페이스하기 위한 표준입니다. 현재 버전은 CGI/1.1이며 CGI/1.2는 진행 중입니다. 웹 브라우징 CGI의 개념을 이해하기