簡體   English   中英

用c從字符串中刪除一些空格

[英]removing a few whitespaces from string with c

首先我的代碼打印yksi itsekseen lol ,現在它打印yksiitsekseenlol ,我正在嘗試打印yksi itsekseen lol 在第一個中有兩個,第二個沒有,我試圖在單詞之間只有一個空格。

我的代碼:

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

void antikorso(char *dest, const char *src) {
    const char *p = src;
    int i;

    for (i = 0; *p != '\0'; i++, p++)
    {
        if (*p == 'x') {
            dest[i++] = 'k';
            dest[i] = 's';
        }
        else if (*p == 'z') {
            dest[i++] = 't';
            dest[i] = 's';
        }
        else
        {
            dest[i] = *p;
        }
    }
    dest[i] = '\0';
    char *original = dest;
    char c[10] = "hello";
    while (dest = strstr(dest, c)) {
        memmove(dest, dest + strlen(c), 1 + strlen(dest + strlen(c)));
    }

    char *nat = original;
    char b[20] = "asd";
    while (dest = strstr(original, b)) {
        memmove(dest, dest + strlen(b), 1 + strlen(dest + strlen(b)));
    }
    printf("\n%s", nat);

    char *vit = nat;
    char d[10] = "  ";
    while (dest = strstr(nat, d)) {
        memmove(dest, dest + strlen(d), 1 + strlen(dest + strlen(d)));
    }
    printf("\n%s", vit);
    return vit;
    }



int main(void)
    {

    const char *lol = "hello yxi asd izexeen hello lol";
    char asd[10000];
    antikorso(asd, lol);

    }

好的,所以你幾乎擁有它,我想,改變

memmove(dest, dest + strlen(c), 1 + strlen(dest + strlen(c)));

memmove(dest, dest + strlen(c) - 1, 1 + strlen(dest + strlen(c)));

我認為這會做到。 該代碼之前跳過了兩個空格,因此如果您將其備份一個位置,它應該在副本中包含一個空格。

無論如何,這應該適用於將兩個空間折疊為一個空間。 您應該測試一下如果連續出現三個空格會發生什么。

暫無
暫無

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

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