Я хочу напечатать слова, разделенные пробелом от входной строки - PullRequest
0 голосов
/ 22 сентября 2019

У меня проблема с этим кодом, он перестает работать, когда он входит во внутренний цикл while, он должен был печатать одно слово.Например, строка «Меня зовут Джек» должна была содержать мое имя Джек, каждое слово после новой строки

int main (void)
{
int i=0,j=0;
char paragraph[1000],word[100];
printf("Enter the paragraph:\n");
gets(paragraph);

while(paragraph[i]!='\0')
{
    int res = isspace(paragraph[i]);
    if (res != 0)
    {
        word[i]='\0';
        printf("\n");
        j=0;
        while(word[j] !='\0')
        {
            printf("%s",word[j]);
            j++;
        }
        j=0;
    }
    word[j] = paragraph[i];
    i++;
    j++;
}
return 0;
}

1 Ответ

0 голосов
/ 22 сентября 2019
#include <stdio.h>
#include <string.h>
int main()
{
    char str1[100];
    char newString[10][10]; 
    int i,j,ctr;
       printf("\n\n Split string by space into words :\n");
       printf("---------------------------------------\n");    

    printf(" Input  a string : ");
    fgets(str1, sizeof str1, stdin);    

    j=0; ctr=0;
    for(i=0;i<=(strlen(str1));i++)
    {
        // if space or NULL found, assign NULL into newString[ctr]
        if(str1[i]==' '||str1[i]=='\0')
        {
            newString[ctr][j]='\0';
            ctr++;  //for next word
            j=0;    //for next word, init index to 0
        }
        else
        {
            newString[ctr][j]=str1[i];
            j++;
        }
    }
    printf("\n Strings or words after split by space are :\n");
    for(i=0;i < ctr;i++)
        printf(" %s\n",newString[i]);
    return 0;
}
...