Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
poprawione-obcinanie-koncowek.
//clang 6.0.0 #include <iostream> #include <cstring> using namespace std; char* usun_spacje(char* tekst) { // usuwanie na koncu int ile_spacji = 0; int index_ostatniego_znaku = strlen(tekst) - 1; // ponizej był błąd -- (strlen(tekst) - 0) pokazywało na znak `\0`, bo jeśli tekst ma 10 znaków, to tekst[10] jest już poza nim i pokazuje na NULL. while (tekst[index_ostatniego_znaku - ile_spacji] == ' ') { ile_spacji++; } // tutaj też był błąd -- chcesz ustawić strlen(tekst) - i na NULL, bo jeśli tekst ma 10 znaków i trzy ostatnie to spacje, to tekst[6] pokazuje // na ostatnią literę przed spacjami i tekst[7] powinien być ustawiony na \0. tekst[index_ostatniego_znaku - ile_spacji + 1] = '\0'; // usuwanie na początku // to natomiast można zoptymalizować, bo nie musisz przesuwać o jeden za każdym razem dopóki tekst zaczyna się od spacji. Wystarczy, że najpierw // znajdziesz pierwszy znak niebędący spacją i potem przesuniesz to raz o większą liczbę pozycji. while (*tekst == ' ') { for (int j = 0; j <= strlen(tekst); j++) { tekst[j] = tekst[j + 1]; } } int dlugosc = strlen(tekst); return tekst; } int main() { char teksty[6][50] = { " prawo i lewo ", "prawo ", " lewo", " ", "", "bez usuwania" }; for (int i = 0; i < 6; i++) { cout << "[" << usun_spacje(teksty[i]) << "]" << endl; } }
run
|
edit
|
history
|
help
0
რიცხვები დაფაზა~ფინალური
xyz
asa
Bitfield too small to hold all enum values
Suma
SubprogramModificat
多态
UnghiLansator
1744. Can You Eat Your Favorite Candy on Your Favorite Day?
QuickDoubly