witam mam drobny problem z programem gdyz jak podaje napis aby program pozniej podal mi jego dlugosc to okazuje sie ze spacje przerywaja czytanie dlugosci napisu(poprostu program zatrzymuje sie na najblizszej spacji) czy moze wiecie jak to mozna poprawic(aby program rowniez czytal spacje)?
oto kod programu
#include <stdio.h>
#include <stdlib.h>
int slen(const char *s)
{
int i = 0;
while(s != '\0')
i++;
return i;
}
int main()
{
char napis[40];
printf("Podaj napis: ");
scanf("%s",napis);
printf("Dlugosc napisu %s\n wynosi %d\n",napis,slen(napis));
return 0;
}
blad czytania wczytywanego napisu
-
- Użytkownik
- Posty: 6607
- Rejestracja: 16 sty 2007, o 19:42
- Płeć: Mężczyzna
- Podziękował: 119 razy
- Pomógł: 1823 razy
blad czytania wczytywanego napisu
Przeczytaj co robi dokładnie funkcja scanf z parametrem %s. A konkretnie co funkcja przez %s rozumie.
Jak już się zaznajomisz, to poczytaj o getline.
Pozdrawiam.
Jak już się zaznajomisz, to poczytaj o getline.
Pozdrawiam.
-
- Użytkownik
- Posty: 97
- Rejestracja: 28 wrz 2009, o 15:01
- Płeć: Mężczyzna
- Podziękował: 3 razy
- Pomógł: 9 razy
blad czytania wczytywanego napisu
A nie prościej tak:
?
W ogóle polecam przejrzeć całą klasę "string" - ciekawe rzeczy można znaleźć ;]
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main()
{
string napis;
cout << "Podaj napis:";
getline(cin,napis);
cout << "Długość napisu: " << napis.length() << endl;
return(0);
}
W ogóle polecam przejrzeć całą klasę "string" - ciekawe rzeczy można znaleźć ;]