C 显示具有空格的字符串中每个单词的第一个字母

C 显示具有空格的字符串中每个单词的第一个字母,c,arrays,character,space,C,Arrays,Character,Space,我试图显示这个C程序中每个单词的第一个字母。但是,它无法识别给定输入中的空格。我在if语句中打印一行作为调试措施。但是,该行没有被执行。它只输出输入的第一个元素。提前谢谢 #include<stdio.h> #include<stdlib.h> #include<string.h> void stringg(char s[],int size) { int i=1; char r[size]; r[0]=s[0

我试图显示这个C程序中每个单词的第一个字母。但是,它无法识别给定输入中的空格。我在if语句中打印一行作为调试措施。但是,该行没有被执行。它只输出输入的第一个元素。提前谢谢

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void stringg(char s[],int size)
{
        int i=1;
        char r[size];
        r[0]=s[0];
        int j;
        for(j=0;j<size;j++)
        {

                if(s[j]==' ')
                {
                        printf("Space Test \n");
                        r[i]=s[j+1];
                        i++;
                }
        }
        r[i]='\0';
        printf("\n The Returned String is %s",&r);
        return;
}
int main()
{
        char ss[100];
        scanf("%s",&ss);
        int size;
        size=sizeof(ss)/sizeof(ss[0]);
        stringg(ss,size);
        return 0;
}
#包括
#包括
#包括
void string(字符s[],整数大小)
{
int i=1;
字符r[大小];
r[0]=s[0];
int j;
对于(j=0;j将
sacnf(“%s”,&ss)
更改为
sacnf(“%%[^\n]”,&ss)

scanf
%s
中,将字符串扫描到空格或新行字符。
sacnf(“%[^\n]”,&ss)
中,您告诉scanf扫描到
\n
,现在scanf将扫描您作为输入提供的所有内容,直到
\n
字符。

在其他地方,您可以使用此技术将输入扫描到特定字符。只需将
\n
字符替换为所需字符。

您可以使用C库函数“isspace()”。要使用此函数,您需要打开ctype库
#include
。如果字符是空白(制表符、vtab、新行)函数将返回1,否则返回值为0。

同样,在这种情况下,您可以使用get();函数。 右字符串输入的代码为:

char txt[101] = {0}, *ptr;

 printf("Message: \n"); // note \n
 gets(txt);

 ptr = (char*)calloc( strlen(txt)+1, sizeof(char)); 
// note + 1 we need byte space for '\0' character 

strcpy(ptr, txt);

具有
“%s”
格式的函数停止读取空白。也许您想要?另外,请不要使用数组的完整大小作为字符串的长度,因为字符串终止符之外的内容将不会初始化,并且将具有不确定的内容。您可以使用
scanf(“%[^\n]s”,ss);
而不是
scanf(“%s”,&ss);
size=sizeof(ss)/sizeof(ss[0]);
->
strlen(ss);
@Someprogrammerdude非常感谢。这解决了问题!