Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Manipulacja "Char"

Ostatnio zmodyfikowano 2009-11-19 16:16
Autor Wiadomość
Piast
Temat założony przez niniejszego użytkownika
Manipulacja "Char"
» 2009-11-18 16:19:35
Jak najprościej przesuwać ,kasować zawartość "char"
np:
Char string[7]="red-blue";

i chcę wywali "-" tak aby wyszło "redblue" bez myślnika
?
P-11653
DejaVu
» 2009-11-18 16:28:59
musisz napisać pętlę, która przepisze wszystkie dalsze znaki bliżej. Pętla może wyglądać np. tak:
C/C++
for( int i = 3; napis[ i ] != '\0'; i++ )
{
    napis[ i ] = napis[ i + 1 ];
}

/edit:
A tak nawiasem mówiąc łańcuchy tekstowe kończą się znakiem '\0'. W Twoim przypadku wychodzisz poza zakres tablicy narażając się jednocześnie na to, że program się wysypie.
P-11655
Elaine
» 2009-11-18 16:41:37
W Twoim przypadku wychodzisz poza zakres tablicy narażając się jednocześnie na to, że program się wysypie.
Jak niekompilujący się program może się wysypać?
ISO/IEC 14882:2003, 8.5.2.2
There shall not be more initializers than there are array elements. [Example:
C/C++
char cv[ 4 ] = "asdf"; // error
is ill-formed since there is no space for the implied trailing ’\\0’. ]

Swoją drogą, twój kod tak nie do końca działa - na pewno ma wyjść "redbluee"? Jeśli chcemy usunąć wszystkie wystąpienia '-', to będzie coś w stylu
C/C++
char * temp = std::remove( string, string + strlen( string ), '-' );
* temp = '\0';
a jeśli tylko pierwsze wystąpienie to
C/C++
std::size_t len = strlen( string );
char * temp = std::find( string, string + len, '-' );
// tu powinien być warunek sprawdzający, czy na pewno jakieś '-' jest, ale nie chce mi się tego pisać ;)
ptr = std::copy( ptr + 1, string + len, ptr );
* ptr = '\0';
P-11656
DejaVu
» 2009-11-18 17:43:02
Jak byś nie zauważył to zero zostanie skopiowane i nadpisze ostatni znak :)
P-11658
Elaine
» 2009-11-18 18:48:38
A tak, racja, uruchamianie kodu w głowie to zły pomysł ;). ...co nie zmienia faktu, że i tak jest to wymyślanie koła na nowo.
P-11662
DejaVu
» 2009-11-18 23:32:28
Ale to jest malutkie koło ;p zresztą... jako jakiś etap programowania powinien docenić oba rozwiązania :)
P-11663
Piast
Temat założony przez niniejszego użytkownika
» 2009-11-19 11:53:30
dlaczego program po znalezieniu znaku kończy pętlę zamiast szukać następnego ?
np:
C/C++
char last_path[ 100 ] = "ble-ble-ble";

for( int i = 0; i <= 100; i++ )
{
    if( last_path[ i ] == '\55' ) last_path[ i ] = '\245';
   
}

znak '\55' to '-' więc program powinien zamienić dwa znaki ,ale zamienia tylko pierwszy ,gdzie jest błąd ?
P-11668
DejaVu
» 2009-11-19 14:02:12
Poczytaj czym się różni zapisywanie pojedyńczego znaku od ciągu znaków.
P-11671
« 1 » 2
  Strona 1 z 2 Następna strona