blad czytania wczytywanego napisu

markez444
Użytkownik
Użytkownik
Posty: 22
Rejestracja: 31 paź 2009, o 16:49
Płeć: Mężczyzna
Lokalizacja: Podlaskie
Podziękował: 7 razy

blad czytania wczytywanego napisu

Post autor: markez444 »

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;
}
soku11
Użytkownik
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

Post autor: soku11 »

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.
exother
Użytkownik
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

Post autor: exother »

A nie prościej tak:

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źć ;]
ODPOWIEDZ