[英]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.