ograniczyć długość wpisywanego tekstu;wpisywanie liczby do char
Ostatnio zmodyfikowano 2014-04-03 22:47
thai1 Temat założony przez niniejszego użytkownika |
ograniczyć długość wpisywanego tekstu;wpisywanie liczby do char » 2014-03-29 19:45:59 Witam. Jak ograniczyć/kontrolować długość wpisywanego tekstu do tablicy, stworzonej operatorem new? mając - char*wtab=new char[50]; Jak zabezpieczyć tablice char stworzoną operatorem new przed wpisaniem innego typu danych? Jestem początkującym i próbuje zrobić swój programik liczący. Zatrzymałem się na etapie zbierania danych od użytkownika. Oto kod, może i nie potrzebny: plik.h: #include <iostream> #include<cstdlib> #include <conio.h> #include <string>
using namespace std;
void information(); void clrscr();
//plik main: #include "naglowek.h";
int liczba_produktow, liczba_surowcow, number;
int main() { MENU: cout << "\t---------MENU-----------\n\n"; cout << "1 - Start program\n"; cout << "0 - Turn off\n\n"; cout << "Put your choice___"; cin >> number; switch( number ) { case 1: clrscr(); information(); break; case 0: break; default: cout << "\n"; cout << "wrong answer, press ENTER and choice again...\n"; getchar(); getchar(); clrscr(); goto MENU; } cout << endl; system( "pause" ); }
//funkcje: int components, products, price;
void clrscr() { system( "cls" ); }
void information() { ONE: cout << "bin number of components___"; cin >> components; TWO: cout << "\n"; cout << "bin number of products___"; cin >> products; cout << "\n"; THREE: char ** wtabcomp = new char *[ components ]; char ** wtabprod = new char *[ products ]; FIVE: for( int i = 0, j = 1; i < components; i++, j++ ) { wtabcomp[ i ] = new char[ 50 ]; cout << "write name of component " << j << "___"; cin >> wtabcomp[ i ]; } SIX: for( int i = 0, j = 1; i < products; i++, j++ ) { wtabprod[ i ] = new char[ 50 ]; cout << "write name of product " << j << "___"; cin >> wtabprod[ i ]; } SEVEN: for( int i = 0; i < products; i++ ) { int * wprice = new int[ products ]; cout << "bin product price " << wtabprod[ i ] << ", please__"; cin >> wprice[ i ]; } EIGHT: int * wassecc = new int[ components ]; for( int i = 0; i < components; i++ ) { cout << "bin, how many of copmonent are asseccible " << wtabprod[ i ]; cin >> wassecc[ i ]; } }
|
|
alixir |
» 2014-03-29 20:23:18 Jeśli chcesz tylko ograniczyć długość wpisywanego tekstu to najlepiej test to zrobić przy użyciu scanf. char tab[ 50 ]; scanf( "%49s", tab ); |
|
thai1 Temat założony przez niniejszego użytkownika |
» 2014-03-30 15:04:31 Nie pomaga :P |
|
pekfos |
» 2014-03-30 15:24:47 Bo to określa, ile danych chcesz wczytać, a nie ile będzie można wpisać. |
|
thai1 Temat założony przez niniejszego użytkownika |
» 2014-04-03 12:08:32 ok wczyta mi część liter, natomiast jak zrobić żeby zablokować następnie wpisywane litery, bo automatycznie przechodzą one na następne wskaźniki |
|
alixir |
» 2014-04-03 17:56:16 Nie wiem czy w konsoli da się zablokować możliwość pojawiania się kolejnych znaków, ale możesz je pominąć. char tab[ 10 ]; scanf( "%9s%*[^\n]s", tab ); Ten kod wczyta maksymalnie 9 znaków, a pozostałe (łącznie ze spacjami) aż do znaku nowej linii pominie, więc bufor będziesz miał czysty. |
|
thai1 Temat założony przez niniejszego użytkownika |
» 2014-04-03 22:47:49 dzięki za odpowiedzi :) |
|
« 1 » |