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
codice:
#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;
}
HO PROVATO A FARE IL MAESTRO 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 !!