문자열의 마지막 단어 길이를 계산하십시오. 단어는 공백으로 구분되며 문자열의 길이는 5000 미만입니다. (참고: 문자열의 끝은 공백으로 끝나지 않습니다.)

목차

1. C 언어 코드 구현

2. 일부 c 언어 라이브러리 기능에 대한 자세한 설명

1.EOF

2. fgets 기능

3.표준입력

4.strrchr

다섯 번째 문자열

6.스트렌()


설명 입력:

계산할 문자열을 나타내는 비어 있지 않은 행을 입력하고 길이는 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;
}

pstrlen함수를 사용하여 길이를 얻을 수 있는 문자열을 가리킵니다 .

입력 텍스트에 여러 단어가 있는 경우 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문자만 읽고 나머지 문자는 다음 읽기를 위해 입력 버퍼에 남겨 둡니다.

fgetsstr이 함수는 에 저장된 읽기 문자열을 가리키는 문자 배열에 대한 포인터를 반환합니다 . 파일 끝을 읽거나 오류가 발생하면 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 - stro'의 위치와 문자열의 첫 번째 주소 사이의 문자 수 이 위치의 인덱스는 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!"lenstrlen()strlen()'\0'

Supongo que te gusta

Origin blog.csdn.net/qq_44732869/article/details/130192916
Recomendado
Clasificación