Пропустить количество слов, находящихся в строке, обозначенных одним параметром - PullRequest
0 голосов
/ 10 сентября 2018

Я застреваю в этой части упражнения. Что мне нужно сделать, это создать функцию вызова skipWords (), которая принимает строку и целое число в качестве аргументов. Эта функция должна возвращать указатель на подстроку предложения. например, если этот параметр имеет значение 0, должен быть возвращен указатель, указывающий на начало строки (то есть слова не пропускаются). Если параметр имеет значение 1, должен быть возвращен указатель на второе слово (пропущено одно слово) и т. Д. Эта функция не может ничего печатать и не может принимать от меня никаких данных.

Это мой код:

#include<stdio.h>
#include<strings.h> // We include this library to manipulate text strings.
#include<ctype.h>
#define SIZE 200
void printFirstWord(char sentence[], char *pointer[])
{
    int i,j=1;
    for(i=1;sentence[i]!='\0';i++)
    {
        pointer[0]=&sentence[0];
        if(isalpha(sentence[i]))
        {
            if(!(isalpha(sentence[i-1])))
                pointer[j]=&sentence[i];
                j++;
        }
    }

    for(i=0;pointer[i]!=NULL;i++)
    {
        printf("Word number %d: ", i);
        while(*pointer[i]!= ' ' && *pointer[i]!='\0')// This will print each character until it reaches a space or the end of the array.
        {
            printf("%c",*pointer[i]);
            *pointer[i]++;
        }
        printf("\n");
    }
}

void skipWords(char sentence[],int words)
{
    int i;
    char *pointer[SIZE]={NULL};
    for(i=0;pointer[i]!=NULL;i++)
    {
        if()
    }


}

int main(void)
{
    int i=0;
    char answer='y';
    char *pointer[SIZE]={NULL};
    char sentence[SIZE]={};
    while(answer=='y')
    {
        printf("Write a sentence: ");
        gets(sentence);
        printFirstWord(sentence, pointer);
        printf("Enter another sentence (y/n)? ");
        scanf("%c%*c",&answer);
    }
    return 0;
    }

Я не знаю, как запустить эту новую функцию.

1 Ответ

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

Сначала вам нужно, чтобы возвращаемый тип был указателем на символ, затем вам нужен массив, если он не является строкой с нулевым символом в конце, а затем вы можете вызвать strlen (), чтобы получить длину строки, чтобы посчитать слова, просто посчитайте пробелы, за которыми следует символ без пробела (начало слова) Кстати, я предполагаю, что под «словом» вы подразумеваете последовательность символов, исключая пробелы ..:

char* skipWords(char s[], int slen, int words)// OR (char* s, int words)
{
    int i = 0;

    if(slen > 0 && isalpha(s[0]))
        words--;

    for(i=0; i < slen - 1;i++)
    {
        if(words == 0)
        {
             return s + i;
        }

        if(isspace(s[i]) && isalpha(s[i+1]))
        {
             words--;
        }
    }

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