我正在尝试删除字符串之间的空格并使用 isalpha() 函数打印出第一个单词。
当我打印出来时,只打印出第一个字母。例如“你好 Pandas ”,我得到“hhhhh”,但我想要洞词“你好”
int main()
{
char inputString[]={"hello big panda"};
int k=0;
int i=0;
do
{
inputString[i];
i++;
}
while (inputString[i]=isalpha(inputString[i]));
for(i=0; inputString[i] !='\0' ;i++)
{
for (k=i; inputString[k] != '\0'; k++)
{
inputString[k] =inputString[i];
}
}
printf("%s", inputString);
return 0;
}
完成了这个:
int printfirstword(char sentence[])
{
int k=0;
int i=0;
while (isalpha(sentence[i])) //checking for the first blank space
{
i++;
}
sentence[i] = '\0';
printf("%s\n", sentence);
return 0;
}
int main()
{
char sentence[100];
int wordNumber;
char answer;
printfirstword("Hello there")
return0;
}
但我不想更改传递给它的字符串
最佳答案
您可以简单地使用 while
循环代替 do-while
。您可以简单地增加 i
直到找到第一个空格的索引。然后使用 i
的值,您可以在字符串中插入 '\0'
。输出它就完成了。 :)
#include <stdio.h>
#include<ctype.h>
int main()
{
char inputString[]={"hello big panda"};
int k=0;
int i=0;
while (isalpha(inputString[i])) //checking for the first blank space
{
i++;
}
inputString[i] = '\0';
printf("%s", inputString);
return 0;
}
如果您想保留原始字符串,那么您可以简单地创建一个新字符串,例如newStr
,然后
while (isalpha(inputString[i])) //checking for the first blank space
{ newStr[i]=inputString[i]; //copy first word into newStr
i++;
}
newStr[i] = '\0';
printf("%s", newStr);
关于c - 数组C编程中打印出奇怪的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47638353/