|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2014
Messaggi: 190
|
Problemi lettura carattere newline c++
Ciao a tutti!!!
ho scritto questo semplice codice per capire un po' come funzioni la conversione da char a integer e viceversa in c++: #include <stdlib.h> #include <stdio.h> int main(){ int i; char c; printf("scrivi un numero e ti daro il corrispondente ASCII: "); scanf("%d",&i); printf("il numero %d corrisponde a %c ASCII",i,i); printf("\nscrivi un carattere e ti daro il corrispondente intero: "); scanf("%c",&c); printf("\nil numero %c corrisponde a %d ASCII",c,c); return 0; system("pause"); } Lancio l'pplicazione e scrivo il numero, poi premo enter per continuare, il problema è che il programma legge il numero come int (e fin qui ok) poi però prende il carattre newline come char e quindi mi da sempre un valore di 10... so che è una stupidaggine Muchas gracias |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Feb 2015
Messaggi: 2
|
Devi estrarre il carattere di ritorno a capo dal buffer di input ( e magari anche tutti gli altri eventuali caratteri residui)
Codice:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int i;
char c;
printf("Scrivi un numero e ti daro il corrispondente ASCII: ");
scanf("%d", &i);
while( getchar() != '\n'); // Estrae caratteri residui dal buffer di input
printf("Il numero %d corrisponde al carattere ASCII '%c'\n\n", i ,i);
printf("Scrivi un carattere e ti daro il corrispondente intero: ");
scanf("%c", &c);
while( getchar() != '\n'); // Estrae caratteri residui dal buffer di input
printf("il carattere '%c' corrisponde al codice %d\n", c, c);
puts("\nPremi INVIO per uscire...");
getchar();
return 0;
}
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2014
Messaggi: 190
|
Grazie mille! sto ancora cercando di capire come funzioni il c, facendo qualche programmino mi sono accorto che mi capita spesso di dover inserire la riga while( getchar() != '\n'); mi sembra un po' laborioso, si può dare l'input utilizzando un altro tasto (invece che enter)
|
|
|
|
|
|
#4 | ||
|
Junior Member
Iscritto dal: Feb 2015
Messaggi: 2
|
Quote:
A meno che tu non voglia reinventare la ruota (come si suol dire) e voglia crearti una tua libreria per la gestione dell'input, che utilizzi direttamente le API di sistema, per gestire in modo più 'estroso' l'immissione di caratteri da tastiera. Ma ne varrebbe la pena ? Sapendo che esiste già un sistema standard e collaudato ? Quote:
|
||
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2014
Messaggi: 190
|
Ok grazie ho capito
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Quello del dover svuotare il buffer di input è un "ostacolo" in cui ci siamo imbattuti tutti.
Attenzione, qualcuno potrebbe consigliarti (o potresti leggerlo su certi forum, non qui) di usare fflush(stdin) per svuotare il buffer di input. Non farlo. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:26.




















