char Aray deki boş(Null) karakterleri sola kaydırmak

Başlatan 41linea45, 23 Şubat 2020, 23:58:43

41linea45

Merhaba

C de   
char a[50]='Bu bir         Test Yazısı';
tanımlamasındaki bir kelimesinden sonraki boşlukları test yazısı ifadesini sola kaydırarak nasıl yapabilirim;

Bu halden
char a[50]='Bu bir         Test Yazısı';
Bu hale getirmek istiyorum.
char a[50]='Bu bir Test Yazısı         ';

bymrz

Anlamadığım şey,

Burada birilerinin bu çözüm için hazır kod yazmasını mı istiyorsun. Yoksa nasıl bir yöntem kullanılacağını mı istiyorsun.

Tahminimce sen biraz ilerlemeden kimse satır satır kod yazmaz senin için.

Bir kaç bilgi verelim, sen adım adım ilerle algoritmanı çıkar biz de yardımcı olmaya çalışalım .

Öncelikle aradığın NULL karakteri değil SPACE ' ' karakteri.
İkincisi string ifadede tek tırnak değil çift tırnak kullanılırç

char a[] =" test mesajı     "

şeklinde...

İlk önce stringin uzunluğunu bul. Stringin uzunluğunu bulmak için son karakterden sonra NULL (0x00) vardır her zaman. Onun nerde olduğunu bularak stringin uzunluğunu hesaplayabilirsin.

Sonra string içinde iki tane yan yana SPACE ' ' karakteri var mı diye adım adım(byte byte) kontrol et. Bulduğunda stringin kalanını bir sola kaydır ve en sona bir SPACE ' ' karakteri ekle...

mufitsozen

void replace_multi_space_with_single_space(char *str)
{
    char *dest = str;  /* Destination to copy to */

    /* While we're not at the end of the string, loop... */
    while (*str != '\0')
    {
        /* Loop while the current character is a space, AND the next
         * character is a space
         */
        while (*str == ' ' && *(str + 1) == ' ')
            str++;  /* Just skip to next character */

       /* Copy from the "source" string to the "destination" string,
        * while advancing to the next character in both
        */
       *dest++ = *str++;
    }

    /* Make sure the string is properly terminated */    
    *dest = '\0';
}
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.