• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Usuwanie początkowej i końcowej spacji w napisie

0 głosów
55 wizyt
pytanie zadane 13 grudnia 2016 w C i C++ przez Kamyyylo Początkujący (460 p.)

hej :D 

Próbowałem rozgryźć jak usunąć spacje na początku i końcu tekstu, który wpisuje, jednak program działał tylko gdy w środku tekstu nie było spacji... Znalazłem w internecie kod działającego programu, trochę go zmodyfikowałem i próbowałem rozgryźć. Mam jednak 2 pytania do tego kodu:

#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    int  i, k;
    char ciag[100];
    cin.getline(ciag, 100);               
    while (ciag[0] == 32)            
    {
        i = 0;
        for (k = 1; ciag[i]!='\0'; k++)
        {
            ciag[i] = ciag[k];                  
            i++;                                
        }
    }
    i = 0;
    while (ciag[i] != 0)              
        i++;
    for (i--; ciag[i] == 32; i--)       
        ciag[i] = 0;                        
    cout << ciag << endl;         
    system("PAUSE");                   
    return 0;
}

Dlaczego w linijce:

while (ciag[0] == 32)    nie działa użycie while (ciag[0] == '0')   ? Czy to nie jest to samo ?

i jeszcze nie wiem jak odczytać i-- i jak działa na początku :

 for (i--; ciag[i] == 32; i--)    

Z góry chciałbym podziękować za pomoc i przepraszam jeśli napisałem lub zrobiłem coś złego :D

1 odpowiedź

0 głosów
odpowiedź 13 grudnia 2016 przez Chess Maniak (72,430 p.)
edycja 13 grudnia 2016 przez Chess
(ciag[0] == 32)

To jest warunek wykonania pętli. ciag[0] ma być równe 32. Jeśli ciag[0] nie będzie równy 32 to pętla zostanie przerwana/skończona.

i-- oznacza to samo, co i=i-1

Jeśli i = 40 to i=40-1 i=39

for(40-1; ciag[40-1]==32; 40-1)

Pętla for zaczyna odliczanie od jakiejś wartości początkowej jaka jest w zmiennej i. Jeśli ciag[9] będzie równy 32 to pętla zakończy działanie.

for(39; ciag[39]==32; 39)

for(38; ciag[38]==32; 38)

for(37; ciag[37]==32; 37)

 (...)

for(32; ciag[32]==32; 32)

 

Jeśli się mylę, proszę poprawić.

<?php 
$x=array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);

$i=22;

for($i--;$x[$i];$i--){
	echo $i;
	echo '<br />';
}

?>

 

komentarz 13 grudnia 2016 przez Kamyyylo Początkujący (460 p.)

w przypadku : 

(ciag[0] == 32)

 chodzi mi o to czemu nie moge zapisac '0'. wiem co to komenda while :D Czy 32 nie jest równe '0'  ? 

komentarz 13 grudnia 2016 przez Chess Maniak (72,430 p.)
To jest warunek, że ciag[0]==32 ma być równy 32. Można zrobić, aby był równy 0, ale trzeba byłoby coś w kodzie zmienić jeszcze.
komentarz 13 grudnia 2016 przez Kamyyylo Początkujący (460 p.)
Boze już widzę... nie chodziło mi o 0 tylko o usunięcie spacji a przeciez w ASCII spacja to 32...Dzieki za uświadomienie mnie :D Jeśli nie chce używać kodów ASCII to wystarczy ze napisze " " i to bedzie oznaczalo spacje przecież :D

Podobne pytania

0 głosów
1 odpowiedź 269 wizyt
pytanie zadane 4 maja 2018 w C i C++ przez Szymek_sw Początkujący (370 p.)
0 głosów
2 odpowiedzi 134 wizyt
pytanie zadane 9 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,080 p.)
0 głosów
1 odpowiedź 281 wizyt
pytanie zadane 7 maja 2017 w HTML i CSS przez Cemini Nowicjusz (170 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

67,116 zapytań

114,064 odpowiedzi

241,764 komentarzy

47,028 pasjonatów

Przeglądających: 184
Pasjonatów: 9 Gości: 175

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...