如何检查字符串C中的空格?

时间:2015-09-30 05:49:06

标签: c arrays pointers error-handling

我正在尝试让我的程序从用户输入一个名称作为输入,然后打印出该名称的首字母。即汤米布朗 - > TB

到目前为止我所拥有的是:

int main (void)
{

char scroll[100] = {"kang cheng junga"};
printf ("%c\n", *(scroll+2));

for (int i=0; i<100; i++)
{
    if (*(scroll+i)=" ")
    {
        printf (*(scroll+i+1));
    }
}

我一直收到这个错误:

  

错误:指向整数的指针不兼容         转换为&#39; char&#39;来自&#39; char [2]&#39;

     

[ - Werror,-Wint转换]       if(*(scroll + i)=&#34;&#34;)

     

错误:使用作业的结果         没有括号的条件

     

[ - Werror,-Wparentheses]       if(*(scroll + i)=&#34;&#34;)

有谁能告诉我我是如何搞砸了这个的?我很难理解*和&amp;我是初学者,所以我不知道自己在做什么。

4 个答案:

答案 0 :(得分:1)

除了strtok之外,您还可以使用strpbrk轻松找到每个space

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

int main (void) {

    char scroll[100] = "kang cheng junga";
    char *p = scroll;

    printf ("\n full name: %s\n", scroll);
    printf (" initials : %c", *p);

    while ((p = strpbrk (p, " ")))
            printf ("%c", *++p);

    printf ("\n\n");

    return 0;
}

<强>输出

$ ./bin/initials

 full name: kang cheng junga
 initials : kcj

您还可以使用仅使用指针的替代版本来消除对string.h的依赖:

#include <stdio.h>

int main (void) {

    char scroll[100] = "kang cheng junga";
    char *p = scroll;

    printf ("\n full name: %s\n", scroll);
    printf (" initials : %c", *p);

    while (*p++)
        if (*p == ' ' && *++p)
            printf ("%c", *p);

    printf ("\n\n");

    return 0;
}

答案 1 :(得分:0)

在C中,=是赋值运算符,==是相等运算符。你需要使用后者。

也就是说,有一个很好的库函数,名为strtok(),它可以让你的生活更轻松。只需传递字符串和分隔符(此处为空格),它将向您返回令牌,您可以打印第一个字符以获取缩写。

答案 2 :(得分:0)

与strtok或strchr一起使用是一种简单的实现方式,缺少一些边界条件,如以单字母结尾等名称

#include <stdio.h>

int main (void)
{

        int i = 0;
        char scroll[100] = {"kang cheng junga"};
        char *p = scroll; // point to base
        printf("%c", *p ); // first letter is almost always certain
        while( *p != '\0' ) { // till end of String

                if ( *(p-1)     == ' ' && *(p+1) != '\0') { // If previous is space and next letter exists
                        printf("%c", *p );      // take it save it or print it
                }
                p ++ ; //proceed
        }

        return 0;
}

答案 3 :(得分:0)

您获得的错误是由于赋值运算符(=)。

if (*(scroll+i)=" ")// assigning a value(blank)
{
    printf (*(scroll+i+1));
}

if (*(scroll+i) == ' ')//Comparing it with a value (blank)
{
    printf (*(scroll+i+1));
}