목차
2. 일부 c 언어 라이브러리 기능에 대한 자세한 설명
설명 입력:
계산할 문자열을 나타내는 비어 있지 않은 행을 입력하고 길이는 5000 미만입니다.
출력 설명:
입력 문자열의 마지막 단어 길이를 나타내는 정수를 출력합니다.
1. C 언어 코드 구현
#include <stdio.h> //printf, fgets, stdin
#include <string.h> //strrchr, strchr, strlen
int main(void)
{
char str[5000] = {0};
int length = 0;
char *p = NULL;
/* 使用fgets从标准输入(stdin)获取一行 */
fgets(str, sizeof(str), stdin);
/* 使用strrchr找到最右边的第一个空格 */
p = strrchr(str, ' ');
if (p)
p = p + 1; //指向首字母
else
p = str; //只有一个单词
/* 使用strchr查找是否存在换行符 */
if (strchr(p, '\n'))
length = strlen(p) - 1;
else
length = strlen(p);
printf("%d\n", length);
return 0;
}
p
strlen
함수를 사용하여 길이를 얻을 수 있는 문자열을 가리킵니다 .
입력 텍스트에 여러 단어가 있는 경우 p
마지막 단어의 첫 번째 문자를 가리키며 길이는 단어의 문자 수이며 로 얻을 수 있습니다 strlen(p)
.
입력 텍스트에 단어가 하나뿐인 경우 p
전체 문자열의 첫 번째 문자를 가리키며 길이는 전체 문자열의 문자 수이며 로 구할 수 있습니다 strlen(str)
.
배열 포인터는 배열의 첫 번째 주소를 가리키는 포인터입니다. 포인터와 배열은 밀접한 관련이 있으며 배열 이름을 통해 배열의 첫 번째 주소를 가져와서 포인터 변수에 할당할 수 있습니다.
C 언어에서는 배열 이름 자체가 배열의 첫 번째 주소에 대한 포인터이므로 배열 이름을 포인터 변수에 할당하여 배열의 첫 번째 주소에 대한 포인터를 얻을 수 있습니다.
배열의 첫 번째 비트는 배열의 첫 번째 요소의 주소를 나타냅니다. 배열은 메모리에 계속 저장되기 때문에 첫 번째 요소의 주소는 전체 배열의 첫 번째 주소이기도 합니다. 배열 이름이나 포인터를 통해 배열의 첫 번째 주소를 얻은 다음 오프셋을 통해 배열의 다른 요소에 액세스할 수 있습니다.
2. 일부 c 언어 라이브러리 기능에 대한 자세한 설명
1.EOF
EOF(End of File)는 C언어에서 파일의 끝을 나타내는 상수입니다. C 언어에서 EOF는 표준 헤더 파일 stdio.h에 정의되어 있으며 일반적으로 -1로 정의되는 음의 정수 상수입니다.
EOF는 일반적으로 파일의 끝을 나타내는 마커로 사용되며 입력을 읽을 때 파일의 끝에 도달했는지 확인하는 데 사용할 수 있습니다. 표준 입력에서 사용자가 파일 끝 문자(보통 Unix 시스템에서는 Ctrl+D, Windows 시스템에서는 Ctrl+Z)를 입력하면 EOF가 반환됩니다. EOF는 파일의 끝을 표시하는 특수 문자로 파일에 나타날 수도 있습니다.
2. fgets 기능
fgets
지정된 파일 스트림에서 문자열을 읽고 지정된 문자 배열에 저장하는 데 사용되는 C 표준 라이브러리의 함수입니다. 함수 프로토타입은 다음과 같습니다.
char *fgets(char *str, int n, FILE *stream);
그 중 는 str
읽은 문자열을 저장하는 데 사용되는 문자 배열에 대한 포인터이고, n
는 읽을 최대 문자 수이며, 일반적으로 문자열에 끝 마커를 추가하기 위해 지정된 문자 배열의 길이에서 1을 뺀 값입니다 \0
. stream
읽을 파일 스트림은 일반적으로 stdin
표준 입력 스트림에서 데이터를 읽는 것을 의미합니다.
fgets
이 함수는 개행 문자를 포함하여 한 번에 한 줄씩 데이터를 읽고 지정된 문자 배열에 저장합니다. 읽기 문자열의 길이가 지정된 최대 문자 수보다 크면 n
함수는 n-1
문자만 읽고 나머지 문자는 다음 읽기를 위해 입력 버퍼에 남겨 둡니다.
fgets
str
이 함수는 에 저장된 읽기 문자열을 가리키는 문자 배열에 대한 포인터를 반환합니다 . 파일 끝을 읽거나 오류가 발생하면 fgets
함수가 반환됩니다 NULL
.
3.표준입력
stdin
표준 입력 스트림(표준 입력 스트림)을 나타내는 데 사용되는 C 표준 라이브러리에 정의된 파일 포인터입니다. C에서 stdin
사용자 입력을 읽는 데 사용할 수 있는 표준 입력 장치(일반적으로 키보드)를 가리킵니다.
파일 포인터를 사용하여 stdin
키보드 또는 기타 표준 입력 장치에서 데이터를 읽고 프로그램에 전달할 수 있습니다. stdin
사용자가 입력한 명령이나 데이터를 읽는 것과 같이 프로그램이 사용자와 상호 작용할 수 있도록 C 프로그램에서 자주 사용됩니다. 포인터를 사용하는 stdin
것은 콘솔이나 명령줄에서 입력을 읽고 입력 데이터를 처리하는 편리한 방법입니다.
4.strrchr
전체 이름은 "문자열 역방향 찾기 문자"이며, 그 기능은 문자열에서 지정된 문자의 위치를 뒤에서 앞으로 찾는 것입니다 . strrchr은 문자열에서 지정된 문자의 마지막 항목을 찾는 데 사용되는 C 표준 라이브러리 함수입니다. 이 strrchr
함수는 문자 자체의 값이 아니라 문자열의 특정 위치를 가리키는 포인터 유형을 반환합니다. 함수 프로토타입은 다음과 같습니다.
char *strrchr(const char *s, int c);
여기서 s는 검색할 문자열 이고 c는 찾을 문자 입니다 .
이 함수는 문자 c의 마지막 발생에 대한 포인터를 반환하거나 c가 s에서 발생하지 않으면 NULL 을 반환합니다 .
예를 들어, 다음 코드는 strrchr 함수를 사용하여 문자열에서 마지막 "o"의 위치를 찾는 방법을 보여줍니다.
char str[] = "Hello, World!";
char *p = strrchr(str, 'o');
if (p)
printf("Last 'o' found at position %ld.\n", p - str);
else
printf("'o' not found in the string.\n");
출력은 다음과 같습니다.
Last 'o' found at position 8.
이 예에서 포인터 p는 문자열에서 마지막 문자 "o"의 위치를 가리키고 문자열에서 이 위치의 인덱스는 포인터 빼기를 사용하여 계산할 수 있습니다. p - str
계산 방법은 포인터 p가 가리키는 주소에서 포인터 str이 가리키는 주소를 빼서 둘 사이의 주소 차이를 구하는 것으로, 이 차이의 단위는 문자(보통 바이트)의 크기, 즉 즉, 그들 사이에 얼마나 많은 문자가 다른지. 이 특정 예에서 p는 문자열 str에서 마지막 'o'의 위치를 가리키고 str은 문자열의 첫 번째 주소이므로 결과는 문자열에서 마지막 ' p - str
o'의 위치와 문자열의 첫 번째 주소 사이의 문자 수 이 위치의 인덱스는 0부터 계산되므로 마지막 'o'의 실제 위치를 얻으려면 최종 출력 결과에 1을 더해야 합니다. 변수 str
의 값은 "Hello, World!"
최종 null 종결자를 포함하여 이 문자열의 모든 문자를 저장하는 문자 배열이라는 것입니다. 변수 의 값은 문자열의 마지막 문자 'o'에 대한 포인터 p
이며 str
, 특히 문자열에서 문자가 0부터 인덱스되기 때문에 문자열의 8번째 문자를 가리킵니다. 변수는 함수 p
에 의해 발견되기 때문에 strrchr
그 값은 함수의 반환 값에 따라 달라집니다 strrchr
.지정된 문자가 문자열에서 발견되면 문자열에서 마지막으로 나타나는 문자에 대한 포인터가 반환됩니다.찾지 않으면 반환 널 포인터(NULL). 문자열에는 두 개의 문자 'o'가 있고 strrchr
함수는 마지막 문자 'o'의 위치를 찾을 것이므로 변수 값은 문자열 p
의 문자 'o'에 대한 포인터여야 합니다. str
배열의 문자 요소의 주소, 말하자면 &str[7]
.
다섯 번째 문자열
strchr
이 함수는 C 언어의 문자열 함수 중 하나로 문자열에서 지정된 문자 의 첫 번째 항목을 찾는 것입니다.
strchr
함수의 선언은 다음과 같습니다.
char *strchr(const char *str, int c);
여기서 str
는 찾을 문자열이고 c
는 찾을 문자입니다. 이 함수는 지정된 문자가 처음 나타나는 위치에 대한 포인터를 반환합니다. 지정된 문자가 없으면 함수는 널 포인터(NULL)를 리턴합니다.
strchr
다음은 함수를 사용하는 샘플 코드 입니다 .
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello, world";
char *p;
p = strchr(str, 'w');
if (p != NULL) {
printf("Found '%c' at position %ld\n", *p, p - str);
} else {
printf("Not found\n");
}
return 0;
}
이 프로그램은 먼저 문자열을 정의한 str
다음 strchr
함수를 호출하여 문자열에서 문자 'w'의 첫 번째 항목을 찾습니다. 발견되면 프로그램은 문자열에서 문자의 위치를 출력하고, 그렇지 않으면 "찾을 수 없음"을 출력합니다.
이 strchr
함수는 문자열에서 지정된 문자의 첫 번째 항목만 찾습니다. 모든 위치를 찾아야 하는 경우 strstr
함수를 사용할 수 있습니다.
6.스트렌()
strlen()
null로 끝나는 문자열의 길이를 결정하는 C 표준 라이브러리의 함수입니다. null로 끝나는 문자열에 대한 포인터인 하나의 매개 변수를 사용하고 문자열의 길이를 나타내는 정수 값을 반환합니다. 다음은 예입니다.
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world!";
int len = strlen(str);
printf("字符串的长度为 %d\n", len);
return 0;
}
이 예에서는 문자열의 길이를 strlen()
결정합니다 . 의 값은 null 종결자를 포함하지 않는 문자열의 문자 수인 13입니다. 이 함수는 null로 끝나는 문자열에서만 작동하므로 문자열 을 에 전달하기 전에 문자열이 null 문자( ) 로 올바르게 끝나는지 확인하는 것이 중요합니다 ."Hello, world!"
len
strlen()
strlen()
'\0'