Program zliczający spacje nie działa

0

Cześć,
Dopiero zacząłem swoją przygodę z językiem C++ i mam problem w programie liczącym spacje w tekście. Otóż program ten ignoruje instrukcję warunkową i wypisuje zawsze 0 (zmienna spacje). Co robię źle?

#include <iostream>
#include <string.h>

using namespace std;
int i;

int main()
{	
	char tekst[255];
	int spacje;
	spacje=0;
	cin >> tekst;
	for (i=0; i<strlen(tekst); i++)
		{
			if(tekst[i]==' ')
			spacje++;
		}
	cout << spacje;
        return 0;
} 
0

Użyj isspace

3

Nie działa, bo cin uznaje spację za koniec tekstu, patrz prosta modyfikacja twojego programu

#include <iostream>
#include <string.h>

using namespace std;
int i;

int main()
{
    char tekst[255];
    int spacje;
    spacje=0;
    cin >> tekst;
    for (i=0; i<strlen(tekst); i++)
        {
            if(tekst[i]==' ')
            spacje++;
        }
    cout <<  "W " << tekst << " mamy " <<  spacje;
        return 0;
}
 

edit: a tu działająca wersja w c++, użyłem string a nie string.h oraz getline-a

 
#include <iostream>
#include <string>

using namespace std;
int i;

int main()
{
    string tekst;
    int spacje;
    spacje=0;
    getline(cin, tekst);
    for (i=0; i<tekst.size(); i++)
        {
            if(tekst[i]==' ')
            spacje++;
        }
    cout <<  "W " << tekst << " mamy " <<  spacje;
        return 0;
}
3

cin >> tekst; wczyta ci tekst do najbliższego białego znaku (w tym spacje).
Użyj: - getline

1
for(i = 0; (c = cin.get()) && cin.good(); i += isblank(c));

1 użytkowników online, w tym zalogowanych: 0, gości: 1