non hai inizializzato i è questo porta delle conseguenze .
altro piccolo particolare ,il programma è tutto da rifare![]()
all' interno del while hai un for, che si aspetta che inserisci 200 caratteri prima di terminare.
la scanf , all'interno del for si aspetta che ad ogni carattere immesso premi invio .
all' uscita del for , se non hai scritto fine , il while continuerebbe ,e provrerebbe ad inserire altri caratteri nell array , che non puo contenerli .
io suggerisco di usare una funzione non standar getch
HO PROVATO A FARE IL MAESTROcodice:#include <stdio.h> #include <stdlib.h> #include <string.h> // programma che fa smettere all'utente di immettere caratteri quando digita la parola 'fine' int main() { char stringa[200]; char terminatore[5]; int i=0,j,k; printf("Inserisci il testo\n"); do { stringa[i]=getch(); putch(stringa[i]); if(stringa[i]==13) { putch(13); putch(10); } i++; if(i>=3)// preleva gli ultimi 4 caratteri { for(j=strlen(stringa)-4,k=0;k<4;k++,j++) terminatore[k]=stringa[j]; terminatore[k]=0; } if(strcmp(terminatore,"fine")==0)break; }while(1 ); puts(""); printf("STAMPA STRINGA\n %s \n", stringa); system("pause"); return 0; }ma devo fare l'alievo
![]()
![]()
ma anche il codice che ho postato io , non si comporta propio a dovere a volte termina
altre no , comunque per i motivi che ti ho detto , il programma che hai postato, non può
comportarsi come ti aspetteresti .
aspetto , che le persone piu competenti , mi spieghino pechè ,anche il mio codice da problemi , come logica mi sembra che vada !!

ma devo fare l'alievo
Rispondi quotando