Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Xiaomi Pad 8 Pro adotta il potente Snapdragon 8 Elite all'interno di un corpo con spessore di soli 5,75 mm e pannello LCD a 144Hz flicker-free, per un tablet che può essere utilizzato con accessori dedicati di altissima qualità. Fra le caratteristiche esclusive, soprattutto per chi intende usarlo con la tastiera ufficiale, c'è la modalità Workstation di HyperOS 3, che trasforma Android in un sistema operativo con interfaccia a finestre
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-07-2010, 16:48   #1
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
[C] problema scanf() e/o getchar()

Dopo un anno di università posso dire di saper programmare in JAVA, non sono un mostro, ma me la cavo. Durante l'estate volevo imparare anche C e C#. Iniziato con C: è abbastanza semplice, bene o male le cose basilari sono quelle, in Java usavo JOptionPane e System.in per prendere valori Input tastiera; in C invece posso usare getchar() se è per un char, scanf() mi sembra meglio per int.
Il problema è che se metto più comandi in fila sia di scanf o getchar e poi avvio l'applicazione per testare, me li salta tutti e non mi fa immettere nulla....
Piccolo Esempio:
Codice:
#include <stdio.h>



#define MAXLINEE 100

#define MAXCOLONNE 100

int mat[MAXLINEE][MAXCOLONNE];


main() {

	int n, m;

	int i, j;


	do {

		printf("\nNumero di linee: ");

		scanf("%d", &n);

	} while ((n >= MAXLINEE) || (n < 1));


	do {
		printf("\nNumero di colonne: ");

		scanf("%d", &m);

	} while ((m >= MAXCOLONNE) || (m < 1));


	printf("\n \n CARICAMENTO DELLA MATRICE \n \n");

	for (i = 0; i < n; i++) {

		for (j = 0; j < m; j++) {

			printf("\nInserisci linea %d colonna %d linea val: ", i, j);

			scanf("d", &mat[i][j]);
	
		}

	}

	for (i=0; i<n;i++){

		printf("\n");

		for (j=0; j<m; j++){

			printf("%5d", mat[i][j]);

		}

	}

}
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 16:53   #2
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
Codice:
scanf("%d", &mat[i][j]);
e non

Codice:
scanf("d", &mat[i][j]);
hai dimenticato un %
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 17:23   #3
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Vero.....
e qui cosa c'è che non va? Non trovo errori:

Codice:
#include <stdio.h>



main() {

	char a, b;

	printf("insert a character: ");

	a = getchar();


	printf("Insert a character: ");

	b = getchar();


	printf("%c", a);

	printf("%c", b);


}
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 17:51   #4
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
il problema è che getchar è una funzione un pò di basso livello.. quando inserisci il primo carattere devi tenere conto che poi schiacci INVIO e quindi rimane nel buffer un carattere '\n'
potresti ad esempio fare così:
Codice:
#include <stdio.h>



main() {

	char a, b;

	printf("insert a character: ");

	a = getchar();

	printf("Insert a character: ");

	while ((b = getchar()) == '\n');

	printf("%c\n%c\n", a,b);
}
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 17:53   #5
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
ok, allora è proprio un "problema" del C, non della codice scritto male...mistero svelato. Mi è più chiaro usare il scanf().
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 18:45   #6
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da Emaborsa Guarda i messaggi
ok, allora è proprio un "problema" del C, non della codice scritto male...mistero svelato. Mi è più chiaro usare il scanf().
un altro modo è fare fflush(stdin) prima della chiamata che svuota il buffer

diciamo che è un problema da questo punto di vista, è un'ottimizzazione (quella del buffer) da altri
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 18:54   #7
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2789
Quote:
Originariamente inviato da tuccio` Guarda i messaggi
un altro modo è fare fflush(stdin) prima della chiamata che svuota il buffer
Purtroppo però questo comportamento non è standardizzato (dipende dall' implementazione)
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 19:00   #8
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da Emaborsa Guarda i messaggi
ok, allora è proprio un "problema" del C, non della codice scritto male...mistero svelato. Mi è più chiaro usare il scanf().
Il problema temo si presenti anche con lo scanf, se inserisci prima numeri e poi caratteri, o viceversa... non vorrei dire vaccate però...

Quote:
Originariamente inviato da tuccio` Guarda i messaggi
un altro modo è fare fflush(stdin) prima della chiamata che svuota il buffer

diciamo che è un problema da questo punto di vista, è un'ottimizzazione (quella del buffer) da altri
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Purtroppo però questo comportamento non è standardizzato (dipende dall' implementazione)
Il mio professore infatti è la prima cosa che ha detto e ci ha proibito di utilizzare fflush per svuotare l'input buffer. Preferisce che utiliziamo la funzione col while scritta da k0nt3
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 10-07-2010, 19:24   #9
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da kwb Guarda i messaggi
Il problema temo si presenti anche con lo scanf, se inserisci prima numeri e poi caratteri, o viceversa... non vorrei dire vaccate però...
Con la scanf() non ho questi problemi.... Comunque terrò in considerazione la funzione col while scritta da k0nt3.
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Windows, come nascondere tutte le finest...
Meta 'svuota' la startup di Mira Murati:...
Nuvacore: gli ex Nuvia e Qualcomm rilanc...
Verifica dell'età online, Ursula ...
Snap licenzia il 16% dei dipendenti: sar...
Motorola Edge 70 Pro, ecco le specifiche...
Quattro accessori auto su Amazon che cam...
TV OLED LG ai minimi storici su Amazon: ...
Apple prepara un nuovo aggiornamento per...
JBL Flip 7 a 94€ su Amazon: ecco perché ...
ECOVACS DEEBOT X12 OmniCyclone arriva in...
Google lancia l'app nativa Gemini per Ma...
Super offerta PC portatile su Amazon: MS...
Future Games Show e PC Gaming Show torna...
Samsung Galaxy Buds4 Pro al minimo stori...
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: 09:27.


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