Измените функцию, чтобы она возвращала указатель на последнюю букву в слове из строки - PullRequest
0 голосов
/ 11 сентября 2018

хорошо, у меня проблема с упражнениями. У меня есть задача, которая говорит мне, что мне нужно изменить функцию ( skipWords () ), чтобы она вместо возврата указателя на первую букву в выбранном слове возвращала указатель на последнюю букву в том же слове. Похоже, я не могу ничего изменить в любой другой функции, кроме skipWords () .

Вот пример EXECUTION :

Напиши предложение: привет тебе Какое слово вы хотите напечатать? 1 о

Мой код:

#include<stdio.h>
#include<strings.h> // We include this library to manipulate text strings.
#include<ctype.h>
#define SIZE 100
int printFirstWord(char *pointer)
{
    int i;
    int length=strlen(pointer);
    for(i=0; i<length; i++)
    {
        if(isalpha(pointer[i])!=0)
        {
            printf("%c",pointer[i]);
        }
        else if(isalpha(pointer[i])==0)
        {
            break;
        }
    }
return 0;
}
char *skipWords(char sentence[],int words)
{
    int count=0,x,i;
    int length=strlen(sentence);
    char *pointer;

    if(words==0)
    {
        pointer=&sentence[0];
    }
    else
    {
        for(i=0; i<length; i++)
        {
            if(isalpha(sentence[i])==0)
            {
                x=i+1;
                count=count+1;
                pointer=&sentence[x];
            }
            if(i==(length-1))
            {
                pointer=NULL;
                break;
            }
            if(count==words)
            {
                break;
            }
        }
    }
    return pointer;
}
void printWord(char sentence[], int wordNumber)
{
    char *pointer;
    int length;
    length=strlen(sentence);
    int i;
    pointer=skipWords(sentence,wordNumber);
    if(pointer==NULL)
    {
        printf("This word doesn't exist");
        return ;
    }
    printFirstWord(pointer);
}
int main()
{
    char sentence[SIZE];
    int length;
    int words;
    int check=1;

    while(check==1)
    {
        printf("Write a sentence; ");
        gets(sentence);
        length=strlen(sentence);
        printf("\nWhich word should be printed? ");
        scanf(" %d",&words);
        printWord(sentence, words);
        printf("\n Do you want to enter a new sentence (press 1 to say yes)?");
        scanf("%d",&check);
        getchar();
    }
return 0;
}

Моя проблема в том, что я не уверен, что мне нужно изменить, я пробовал большую часть дня, и все мои попытки получить его потерпели неудачу.

1 Ответ

0 голосов
/ 11 сентября 2018

Вам не разрешено иметь число внутри вашего предложения, потому что isalpha проверяет только буквы.

Я изменил некоторые имена переменных и использовал фиксированное предложение и слово, но это не меняет программу.

Все, что я сделал (я думаю), изменил printFirstWord fkt.

См. Код здесь: http://coliru.stacked -crooked.com / a / df75d62b5aa338f3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...