打印句子中每个单词的首字母

时间:2019-02-18 15:01:09

标签: c

我正在学习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

预期输出:硬件

实际输出:(无)

2 个答案:

答案 0 :(得分:7)

问题在于您如何读取输入内容:

scanf("%s",&s);

%s的{​​{1}}格式说明符读取字符,直到遇到空格。这意味着它将在第一个空格处停止读取。

如果您想阅读全文,请改用scanf

fgets

答案 1 :(得分:-1)

 #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