Выведите первую букву каждого слова в предложении - PullRequest
0 голосов
/ 18 февраля 2019

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

#include<stdio.h>
#include<string.h>
int main()
{
    char s[100];int i,l;
    scanf("%s",&s);
    l=strlen(s);
    printf("%c",s[0]);
    for(i=0;i<l;i++)
    {
        if(s[i]==' ')
        {
            printf("%c",s[i+1]);
        }
    }
 }

Ввод: Hello World

Ожидаемый вывод: HW

Фактический вывод: (ничего)

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019
 #include <stdio.h>
 #include <string.h>
 int main()
 {
   char str1[100];
   char newString[10][10]; 
   int i,j,ctr;
   printf(" Input  a string : ");
    fgets(str1, sizeof str1, stdin);    
    j=0; ctr=0;
    for(i=0;i<=(strlen(str1));i++)
    {
        if(str1[i]==' '||str1[i]=='\0')
        {
             newString[ctr][j]='\0';
            ctr++;
            j=0;
        }
        else
        {
            newString[ctr][j]=str1[i];
            j++;
        }
    }
    for(i=0;i < ctr;i++)
    {

        printf(" %c\n",(newString[i])[0]);

    }
    return 0;
}
//Here is your working code
0 голосов
/ 18 февраля 2019

Проблема в том, как вы читаете ввод:

scanf("%s",&s);

Спецификатор формата %s для scanf читает символы, пока не встретит пробел.Это означает, что он перестает читать с первого пробела.

Если вы хотите прочитать полную строку текста, используйте fgets вместо:

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