簡體   English   中英

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

[英]How to check spaces in a string C?

我試圖讓我的程序從用戶那里輸入一個名稱,然后打印出該名稱的首字母。 即湯米布朗 --> 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));
    }
}

我不斷收到此錯誤:

錯誤:從“char [2]”分配給“char”的整數轉換指針不兼容

[-Werror,-Wint-conversion] if (*(scroll+i)="")

錯誤:使用賦值結果作為不帶括號的條件

[-Werror,-W括號] if (*(scroll+i)="")

誰能告訴我我是怎么搞砸的? 我很難理解 * 和 & 在 C 中的功能。我是一個初學者,所以我真的不知道我在做什么。

除了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;
}

你得到的錯誤是因為賦值運算符 (=) 。

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

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

在 C 中, =是賦值運算符,而==是相等運算符。 您需要使用后者。

也就是說,有一個很好的庫函數,名為strtok() ,它可以讓您的生活更輕松。 只需傳遞字符串和分隔符,(這里是空格 ),它會將令牌返回給您,您可以打印第一個字符以獲取首字母。

與 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM