Originariamente inviato da Salvy95
influisce perché provi ad allocare più memoria di quanta ne hai inizializzata... è come se provassi ad inserire all'interno di un hard disk di 500MB, 300GB... il sistema automaticamente passa all'hard disk successivo, ma non essendoci perché il tuo è un char (un singolo hard disk) scrive i tuoi caratteri nel primo hard disk libero che riesce a trovare e tocca indirizzi che non dovrebbero essere toccati! spero sia stato chiaro!
No... quello che stai descrivendo credo che sia un buffer overflow, ma qui non si verifica nulla di tutto ciò: non sta usando una stringa di formato "%s" con dei singoli char, per i quali invece usa correttamente la "%c". Il punto è che, invece di acquisire una stringa per ogni scanf, di fatto acquisisce un singolo carattere ogni scanf, e i caratteri del primo input (dato che l'input è bufferizzato in C) bastano per tutte le scanf.