我正在学习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
预期输出:硬件
实际输出:(无)
答案 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