Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Lenovo Idea Tab Plus prova a portare un display da 12,1 pollici 2.5K, quattro speaker Dolby Atmos e una batteria da 10.200 mAh sotto la soglia psicologica dei 300 euro, penna inclusa. Lo abbiamo usato per oltre una settimana per capire dove l'azienda ha tagliato e dove invece ha tenuto il punto
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
L'euro digitale è una valuta fiat che entrerà in vigore nei prossimi anni. L'obiettivo principale è quello di ridurre la dipendenza dalle piattaforme di pagamento digitali statunitensi e offrire ai cittadini un modo semplice per trasferire denaro. Anche offline, anche in maniera (pseudo)anonima
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-01-2005, 15:10   #1
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
[C++]Dubbio matrici

Salve a tutti,
ho appena fatto il seguente programma:

Codice:
#include <iostream.h>
#include <stdio.h>

int main()
	{
	const int righe=5,colonne=20; //crea una matrice da 5 righe e 20 colonne; le colonne sono le lettere
	char matrice[righe][colonne],scelta;
	int i;
	for(i=0;i<righe;i++)
		{
		cout<<"Inserire la parola di posto "<<i<<endl; 
		gets(matrice[i]);
	}
		
	do
		{
		cout<<"Desideri vedere la matrice? "<<endl;
		cin>>scelta;
	}while(scelta!='s');
	
	if(scelta=='s')
		{
		for(i=0;i<righe;i++)
			{
			cout<<matrice[i]<<"  ";
			}
		}
	getchar();
	}
Me lo compila correttamente e funziona, ma c++ mi da un warning:
Codice:
In file included from /usr/include/c++/3.3.2/backward/iostream.h:31,
                 from stringhe_matrici.cpp:1:
/usr/include/c++/3.3.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
stringhe_matrici.cpp:29:10: warning: no newline at end of file
/home/antonio/tmp/ccSqqUJT.o(.text+0x8c): In function `main':
: warning: the `gets' function is dangerous and should not be used.
In particolare l'ultimo in grassetto

__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 15:27   #2
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Re: [C++]Dubbio matrici

Quote:
Originariamente inviato da -Yara-
Me lo compila correttamente e funziona, ma c++ mi da un warning:
Codice:
In file included from /usr/include/c++/3.3.2/backward/iostream.h:31,
                 from stringhe_matrici.cpp:1:
/usr/include/c++/3.3.2/backward/backward_warning.h:32:2: warning: #warning
This file includes at least one deprecated or antiquated header.
Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard.
Examples include substituting the <X> header for the <X.h> header for C++ includes,
or <sstream> instead of the deprecated header <strstream.h>.
To disable this warning use -Wno-deprecated.
Significa che mescoli funzioni "buone" con funzioni deprecate, cioe' che andrebbero sostituite con altre funzioni piu' recenti e "migliori".
Probabilmente si riferisce al fatto che mescoli input-output in stile C++ (iostream.h) e in stile C (stdio.h).
Inoltre, ti dice che se non vuoi che ti dia questo messaggio di avviso, devi passare il parametro -Wno-deprecated a gcc quando lo lanci.
Quote:
Codice:
stringhe_matrici.cpp:29:10: warning: no newline at end of file
Stai per caso usando emacs per scrivere il programma?
Perche' questo editor ha l'abitudine di non aggiungere automaticamente un carattere di fine riga alla fine di un file di testo.
Roba che si corregge in un attimo, comunque.
Quote:
Codice:
/home/antonio/tmp/ccSqqUJT.o(.text+0x8c): In function `main':
: warning: the `gets' function is dangerous and should not be used.
In particolare l'ultimo in grassetto
L'ultima in grassetto si spiega da sola: gets e' una delle funzioni fatte peggio nella libreria standard del C, provoca un sacco di problemi di sicurezza aprendo la porta a buffer overflow, e andrebbe sostituita con funzioni omologhe ma che facciano un controllo sul numero di caratteri della stringa di input, ad esempio fgets.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 15:54   #3
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
Ti ringrazio.
Ho messo fgets, pero':
Codice:
In file included from /usr/include/c++/3.3.2/backward/iostream.h:31,
                 from stringhe_matrici.cpp:1:
/usr/include/c++/3.3.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
/usr/include/stdio.h: In function `int main()':
/usr/include/stdio.h:526: error: too few arguments to function `char* fgets(char*, int, FILE*)'
stringhe_matrici.cpp:12: error: at this point in file
stringhe_matrici.cpp:31:10: warning: no newline at end of file
Cosa vuol dire?



P.S. Come editor uso Kwrite
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 18:14   #4
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
UP
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 18:26   #5
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
Quote:
Originariamente inviato da -Yara-


Cosa vuol dire?



P.S. Come editor uso Kwrite
Vuol dire che sbagli a passargli gli argomenti, facci vedere come chiami fgets.
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 19:25   #6
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
Quote:
Originariamente inviato da beppegrillo
Vuol dire che sbagli a passargli gli argomenti, facci vedere come chiami fgets.
Guarda, non ho ancora fatto le funzioni, cmq:
Codice:
#include <iostream.h>
#include <stdio.h>

int main()
        {
        const int righe=5,colonne=20; //crea una matrice da 5 righe e 20 colonne; le colonne sono le lettere
        char matrice[righe][colonne],scelta;
        int i;
        for(i=0;i<righe;i++)
                {
                cout<<"Inserire la parola di posto "<<i<<endl; 
                fgets(matrice[i]);
        }
                
        do
                {
                cout<<"Desideri vedere la matrice? "<<endl;
                cin>>scelta;
        }while(scelta!='s');
        
        if(scelta=='s')
                {
                for(i=0;i<righe;i++)
                        {
                        cout<<matrice[i]<<"  ";
                        }
                }
        getchar();
        }
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:20   #7
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
Quote:
Originariamente inviato da -Yara-
Guarda, non ho ancora fatto le funzioni, cmq:
Codice:
#include <iostream.h>
#include <stdio.h>

int main()
        {
        const int righe=5,colonne=20; //crea una matrice da 5 righe e 20 colonne; le colonne sono le lettere
        char matrice[righe][colonne],scelta;
        int i;
        for(i=0;i<righe;i++)
                {
                cout<<"Inserire la parola di posto "<<i<<endl; 
                fgets(matrice[i]);
        }
                
        do
                {
                cout<<"Desideri vedere la matrice? "<<endl;
                cin>>scelta;
        }while(scelta!='s');
        
        if(scelta=='s')
                {
                for(i=0;i<righe;i++)
                        {
                        cout<<matrice[i]<<"  ";
                        }
                }
        getchar();
        }
Ma fgets stà per file gets, io non vedo nessun file..
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:23   #8
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
Quote:
Originariamente inviato da beppegrillo
Ma fgets stà per file gets, io non vedo nessun file..
Boh..me l'ha consigliata ZioSilvio al posto di gets...
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:26   #9
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
ti faccio un esempio d'uso di fgets per leggere 30 caratteri (massimo) dalla tastiera (stdin, cioè standard input) e memorizzarli nel vettore buffer (che chiaramente deve essere lungo almeno 30 char):

fgets(buffer, 30, stdin);

ok?
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:27   #10
MauryWeb
Senior Member
 
L'Avatar di MauryWeb
 
Iscritto dal: May 2002
Città: Torino
Messaggi: 616
se usi fgets(bla,bla,stdin) è come usare gets(...)


__________________
[INSERIRE QUI LA FIRMA]
MauryWeb è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:30   #11
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
char *fgets(char *str, int n, FILE *stream);

Reads a line from the specified stream and stores it into the string pointed to by str. It stops when either (n-1) characters are read, the newline character is read, or the end-of-file is reached, whichever comes first. The newline character is copied to the string. A null character is appended to the end of the string.

On success a pointer to the string is returned. On error a null pointer is returned. If the end-of-file occurs before any characters have been read, the string remains unchanged.

Ovviamente puoi mettere anche standard input come stream.
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:35   #12
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da MauryWeb
se usi fgets(bla,bla,stdin) è come usare gets(...)
non è come usare gets perchè in fgets il secondo "bla" che hai scritto serve per dare un limite ai caratteri letti, per evitare il buffer overflow.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:42   #13
MauryWeb
Senior Member
 
L'Avatar di MauryWeb
 
Iscritto dal: May 2002
Città: Torino
Messaggi: 616
la mia non era una critica!

non intendevo dire che usando fgets() si hanno gli stessi problemi di vulnerabilità come se si usasse la gets()
__________________
[INSERIRE QUI LA FIRMA]
MauryWeb è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:45   #14
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
Vi credo sulla parola
Nel mio caso..potrei mettere
Codice:
fgets(matrice[i],stdin);
No?
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:51   #15
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
Ho risolto cosi:
Codice:
#include <iostream.h>
#include <stdio.h>

int main()
        {
	const int righe=5,colonne=20; //crea una matrice da 5 righe e 20 colonne; le colonne sono le lettere
        char matrice[righe][colonne],scelta;
        int i;
        for(i=0;i<righe;i++)
                {
                cout<<"Inserire la parola di posto "<<i<<endl; 
                fgets(matrice[i],colonne,stdin);
        }
                
        do
                {
                cout<<"Desideri vedere la matrice? "<<endl;
                cin>>scelta;
        }while(scelta!='s');
        
        if(scelta=='s')
                {
                for(i=0;i<righe;i++)
                        {
                        cout<<matrice[i]<<"  ";
                        }
                }
        getchar();
        }
In pratica la costanten colonne contiene il numero massimo di caratteri che voglio io
Bello, ma perchè gets è considerato poco sicuro?
Se ho capito bene, è perchè se per esempio io ho una stringa da 20 caratteri e ne metto 30, questa scrive gli altri 10 caratteri in un altra area di memoria.
Ho detto una cazzata?
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 20:51   #16
MauryWeb
Senior Member
 
L'Avatar di MauryWeb
 
Iscritto dal: May 2002
Città: Torino
Messaggi: 616
Quote:
Originariamente inviato da -Yara-
Vi credo sulla parola
Nel mio caso..potrei mettere
Codice:
fgets(matrice[i],stdin);

Codice:
fgets(matrice[i],MAXBUFF,stdin);
__________________
[INSERIRE QUI LA FIRMA]

Ultima modifica di MauryWeb : 13-01-2005 alle 21:04.
MauryWeb è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2005, 21:07   #17
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
ho risposto su
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2005, 07:56   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Metti:

#include <iostream>
#include <cstdio>

using namespace std;


al posto di:

#include <iostream.h>
#include <stdio.h>

Il modo di includere che hai usato è deprecato...studiati qualcosa sui namespace...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2005, 13:51   #19
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
Quote:
Originariamente inviato da cionci
Metti:

#include <iostream>
#include <cstdio>

using namespace std;


al posto di:

#include <iostream.h>
#include <stdio.h>

Il modo di includere che hai usato è deprecato...studiati qualcosa sui namespace...
Ascolta..come mai devo mettere cstdio? perchè senza h? tra l'altro se metto iostream nel modo che mi hai detto tu da errore di compilazione (cout e cin undeclared)..Uso gcc versione 3.3.2
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2005, 15:15   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Se metti using namespace std; vedrai che funziona tutti... Gli include del C si mettono con la "c" davanti per includerle nel namespace std... Fai una ricerchina sui namespace...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Cornici ancora più ridotte su iPh...
Samsung lancia la Galaxy Card con cashba...
Dal 2 agosto entrano in vigore nell'UE l...
Vicino a Parma il parcheggio dimenticato...
Sony Music fa la guerra a Udio: contesta...
Telegram integrerà un portafoglio...
Il debito nascosto dei giganti tech dell...
Amazon dà il via libera alla seri...
Addio crisi dell'elio-3? Questa tecnolog...
Google Pixel 10a a 399€ e crolla anche i...
Haier I-Pro Serie 3 a 359€: la lavatrice...
Claude Code ora collauda le app iOS da s...
Unity mostra per la prima volta un gioco...
Fotonica programmabile: un chip sudcorea...
DJI Neo vola da solo, è un 4K, senza pat...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:21.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v