C 显示具有空格的字符串中每个单词的第一个字母
我试图显示这个C程序中每个单词的第一个字母。但是,它无法识别给定输入中的空格。我在if语句中打印一行作为调试措施。但是,该行没有被执行。它只输出输入的第一个元素。提前谢谢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
#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非常感谢。这解决了问题!