在c中测试嵌入式空间

时间:2010-12-01 17:49:32

标签: c

我想在C编程中创建一个函数,它将测试C中的嵌入空格。

如果在字符串中找到嵌入空格,则返回1,否则为0

的示例:

'sjdfnsdj' >>>>> return 0
'sdsd sdsdf' >>>>> return 1
'    ssadsa' >>> return 0
'dfjksdnf sdfsdfdf' >>>> return 1
' sadf asdad' >>>> return 1

嵌入空格表示两个字符串之间或字符串之后但不在字符串之前的空格

2 个答案:

答案 0 :(得分:2)

跳过前导空格后,您可以使用strchr扫描字符串中的空格字符。

假设char buf []持有要测试的字符串

int i=0;
while ( buf[i] == ' ' && buf[i] != '\0' )
  i++;

return strchr( &buf[i], ' ' ) != NULL;

编辑:该帖子已经重新作业。

除了使用strchr之外,您还可以执行另一个循环,例如跳过前导空格。找出第一个非空格字符后是否还有空格。

答案 1 :(得分:1)

这可能会有所帮助,基本上你需要一个简单的状态机。

int CheckEmbeddedStr(char *str)
{
    //0 - No Start str
    //1 - Start str seen
    //2 - embedded space seen
    //3 - trailing str seen
    int state=0; 
    int count=0;
    while(str && str[count])
    {
        if(state == 0 && isalpha(str[count]))
            state++;
        if(state == 1 && str[count] = ' ')
            state++;
        if(state == 2 && isalpha(str[count]))
        {
            state++;
            break;
        }
    }
    if(state==3)
        return 1;
    else
        return 0;
}