Tablice znakowe[c++]
Ostatnio zmodyfikowano 2014-01-12 13:08
martenstan Temat założony przez niniejszego użytkownika |
Tablice znakowe[c++] » 2014-01-11 01:14:57 Witam,Mój problem polega na usunieciu z tablicy znakowej znaku bez uzycia klasy string. Załóżmy że chce skopiowac to bez spacji do drugiej tablicy. char tablica[50]=" chce a usunac a i spacje "; aby powstalo "chceausunacaispacje" char tablica2[50]; robie to tak for( int i = 0; tablica[ i ] != '\0'; i++ ) { if( tablica[ i ] != 32 ) tablica2[ i ] = tablica[ i ]; }
wyswietlam tablice 2 i mam jakies dziwne znaki w miejscu co usunąłem ;/ Liczę na pomoc |
|
leon_w |
» 2014-01-11 11:14:39 Czasami naprawdę pomaga rozpisanie problemu na kartce. Twój kod mówi: "Kopiuj, jeśli to nie spacja ( czy coś koło tego). Jeśli napotka spacje, nie robi nic (przechodzi do następnego el. tablicy). Więc, jeśli na początku będzie np 3 spacje, w tablicy2 te trzy miejsca będą puste(niezainicjowane), dlatego wychodzą dziwne znaki. Żeby to naprawić, trzeba ustalić dla drugiej tablicy osobny licznik, ktory zwiększa się tylko wtedy, gdy coś do niej skopiujemy. |
|
RazzorFlame |
» 2014-01-11 13:17:40 Użyj tablicy dynamicznej, czy to takie trudne? char tab1[ 50 ] = "a b c d e f g h i j k l m n o "; unsigned int tab1size = 0; for( int i = 0; tab1[ i ] != '\0'; i++ ) if( tab1[ i ] != 32 ) tab1size++;
char * tab2 = new char[ tab1size ]; int j = 0; for( int i = 0; tab1[ i ] != '\0'; i++ ) { if( tab1[ i ] != 32 ) { tab2[ j ] = tab1[ i ]; j++; } }
Taki mały przykładzik ode mnie. |
|
martenstan Temat założony przez niniejszego użytkownika |
» 2014-01-12 13:08:22 Dzięki za pomoc.Zrozumiałem :) |
|
« 1 » |