C编程:删除第一个空格前的字符串



我想输入一个字符串并删除第一个"空间";。

这里有一个例子:

之前

Hello world

之后

world

要覆盖拐角情况,需要进行一些检查。如果传递的指针为NULL或在字符串中找不到字符,它将返回NULL。

char *getstrafter(const char *str, char c)
{
if(str)
{
while(*str)
{
if(*str == c) break;
}
}
return (char *)((str && !*str) ? NULL : str + 1);
}
char *getstrafter1(const char *str, char c)
{
if(str)
{
str = strchr(str, c);
if(str) str++;
}
return str;
}

此代码应该适用于您。它利用了str是指向字符串第一个字符的指针这一事实。

char *str = "Hello world";
/*
* Uncomment if `str` could be `NULL`:
*
* if (str == NULL) {
*     fprintf(stderr, "Error: invalid stringn");
*     exit(EXIT_FAILURE);
* }
*/
while (*str != ' ' && *str != '') {
++str;
}
if (*str == ' ')
++str;

如果您不太熟悉指针,这是一种类似的方法,可能更容易理解。

char *str = "Hello world";
/*
* Uncomment if `str` could be `NULL`:
*
* if (str == NULL) {
*     fprintf(stderr, "Error: invalid stringn");
*     exit(EXIT_FAILURE);
* }
*/
int i = 0;
while (str[i] != ' ' && str[i] != '') {
++i;
}
if (str[0] == ' ')
str = &str[i + 1];

最新更新