Отображение краткой формы строки - PullRequest
0 голосов
/ 08 мая 2020

Я новичок в программировании C. Недавно я попытался решить простую задачу - найти краткую форму строки. Я не могу понять, почему мы используем в программе *(ptr+i-1). Что делать, если я использую только * (ptr+i). Подскажите, пожалуйста, как это работает?

#include<stdio.h>
#include<string.h>
int main()
{
    char sent[100];
    char *ptr;
    printf("Enter a sentence : ");
    gets(sent);

    char len=strlen(sent);
    printf("%c",*sent);
    ptr=&sent;
    for(int i=1; i<len; i++)
    {
        if(*(ptr+i-1) == ' ')
        {
            printf(" %c",*(ptr+i));
        }
    }
    return 0;
}

1 Ответ

2 голосов
/ 08 мая 2020

" Я не могу понять, почему мы используем *(ptr+i-1) в программе. Что, если я использую только * (ptr+i). Кто-нибудь, пожалуйста, скажите мне, как это работает? "

for(int i=1; i<len; i++)
{
    if(*(ptr+i-1) == ' ')
    {
        printf(" %c",*(ptr+i));
    }
}

*(ptr+i-1) важно, поскольку i начинается с / инициализируется значением 1 не 0 в отношении чтения строки с первого символа, а не со второго.

С *(ptr+i) вместо этого вы будете читать со второго символа строки.


Примечание:

gets(sent); -> Не используйте gets(), оно устарело:

Почему функция gets настолько опасна, что ее не следует использовать?

...