jak ograniczyc ilosc wpisywanych danych z klawiatury?? Help.

0

chce wprowadzic dane do bazy danych zrobionej przeze mnie (imie, nazwisko itd) i kazdy ten element powinien skladac cie z 20 znakow. Problem w tym ze gdy robbilem wprowadzanie cinem to po wprowadzeniu wiecej niz tych 20 znakow program sie wysypywal (aha wprowadzam do tablicy 20-to elementowej). Pozniej probowalem rozwiazac ten problem fgetsem (bo on ma ograniczenie) ale w tym przypadku po wpisaniu wiekszej ilosci znakow (np 25) tez wszystko sie wysypywalo (np po wporwadzeniu dluzszego imienia i zatwierdzeniu program wypisywal od razu prosze wprowadzic nazwisko, prosze wprowadzic nazwe ksiazki itd. - tzn nie czekal az wprowadze to nazwisko tylko "rzelatywal"dalej...

czy ktos moze mi pomoc rozwiazac ten problem? [???]

1

hi ;> problem zasadniczo prosty ;> musisz zrobic taka funkcje ktora by odczytywala znak po znaku z stdin i zapisywala max ilestam znakow do tablicy ;> a.. i zatrzymywala swoje dzialanie po nacisnieciu np ENTER lub dostaniu EOF ;>

moze to byc np:

#include<stdio.h>

void
pobierz( char *dane, int max )
{
  int ch;
  max--; /* miejsce na koncowe '\0' */
  
  /* dopoki jest co czytac i nie jest to enter */
  while( ( ch = getchar( ) ) != '\n' && ch != EOF )
  {
    /* jezeli jeszcze mozna zapisac */
    if( max )
    {
      /* to zapisz dane */
      *dane++ = ch;
      max--;
    }
  }
  
  /* dopisz EOS */
  *dane = '\0';  
}

int
main( void )
{
  char asdf[ 256 ];
  puts( "wpisz dwie linie tekstu" );
  pobierz( asdf, 10 );
  pobierz( asdf+10, 10 );
  printf( "pobrano "%s"\n", asdf );
  printf( "pobrano "%s"\n", asdf+10 );
  return 0;
}
0

Witam.
Mozesz wykorzystac do tego funkcje getline oto przyklad:

# include <iostream>

using namespace std;

void main()
{
	char imie[20];

	cout << "Podaj swoje imie max 20 znakow" << endl;
	cin.getline(imie, sizeof(imie));

	cout << imie << endl;
}

http://www.keywords.prv.pl

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