|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
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à. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7262
|
Codice:
scanf("%d", &mat[i][j]);
Codice:
scanf("d", &mat[i][j]);
|
|
|
|
|
|
#3 |
|
Senior Member
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à. |
|
|
|
|
|
#4 |
|
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);
}
|
|
|
|
|
|
#5 |
|
Senior Member
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à. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
Quote:
diciamo che è un problema da questo punto di vista, è un'ottimizzazione (quella del buffer) da altri |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
|
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Quote:
Quote:
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
||
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
|
Con la scanf() non ho questi problemi.... Comunque terrò in considerazione la funzione col while scritta da k0nt3.
__________________
Vendo...nulla. Cerco...la felicità. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:14.




















