Stai usando un browser non aggiornato. Potresti non visualizzare correttamente questo o altri siti web. Dovreste aggiornare o usare un browser alternativo.
sono alle prime armi con Linguaggio C e sto facendo degli esercizi. sto provando delle semplici cose con gli array di carattere.
chiedo all'utente di scrivere 4 caratteri e poi li alloco in un vettore. alla fine li stampo.
Funziona se inserisco delle lettere ma se inserico ad esempio 4 parentesi quadrate / graffe 2 aperte e 2 chiuse tipo "[[]]" o "{{}}" quando stampo mi da due parentesi quadre/ graffe seguite da dei numeri tipo \254. perchè?
C:
#include <stdio.h>
int main(void)
{
char vet[4];
printf("enter parentheses or braces:");
for(int i = 0; i < 4; i++)
{
scanf("%c", &vet[i]);
}
for(int i = 0; i < 4; i++)
{
printf("%c", vet[i]);
}
printf("\n");
return 0;
}
Il tuo codice funziona, ti basta aggiungere solo uno spazio prima del definitore di formato della funzione scanf affinché il flusso non rimanga sporco:
C:
scanf(" %c", &vet[i]);
Mi sembra di avertelo spiegato già poco tempo fa in un'altra discussione. Il discorso è sempre lo stesso. Quando digiti invio, sulla tastiera, rimane un carattere "\n" nel flusso di input. Nel momento in cui vai a fare acquisizioni successive di altri caratteri, la funzione scanf ti legge il carattere/i di fine linea che sono rimasti nel flusso e non acquisisce più i caratteri desiderati.