Newsgroup: it.comp.lang.c
Titolo: Strano errore in fase die secuzione

Stavo scrivendo questo semplicissimo programmino in C che dovrebbe 
simulare il gioco dell'impiccato.
Uso una stringa, ind_parola, dove inserisco tutti i caratteri indovinati, 
ma quando provo a stampare questa stringa, la riga con l'istruzione di 
stampa viene saltata, come se non esistesse, ad esempio
printf("%s \n",ind_parola);
Ecco il programma completo:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main()
{
char parola[25];
char ind_parola[25];
int tentativi=0;
int i, prove=0;
int indovinato=0;
char carattere;
printf("Inserisci la parola segreta:\n");
scanf("%s",&parola);
i=0;
while(parola[i]!='\0')
{
    ind_parola[i]='_';
    i++;
}
ind_parola[i]='\0';
tentativi=i;
while((prove<tentativi) && (indovinato==0))
{
    puts("Inserisci carattere:");
    scanf("%s",&carattere);
    i=0;
    while(parola[i]!='\0')
        {
            printf("ciclo while i=%d\n",i);
            if (parola[i]==carattere)
                {
                    printf("i=%d parola[%d]=%c",i,i,parola[i]);
                    ind_parola[i]=carattere;//parola[i];
                    printf("ind_parola=%c\n",ind_parola[i]);
                }
            i++;
            printf("%s \n",ind_parola);
            //indovinato=(strcmp(parola,ind_parola)==0);
            //printf("indovinato= %d corrette=%d\n",indovinato, corrette);
        }
        indovinato=(strcmp(parola,ind_parola)==0);
        prove++;
        printf("prove=%d\n",prove);
        printf("%s \n",ind_parola);
}
        printf("prove=%d\n",prove);
        printf("%s \n",ind_parola);
return 0;
}

      scanf("%s",&carattere);
Qui stai leggendo una stringa di caratteri ma carattere essendo 
dichiarato come char ha dimensione 1.  anche se la stringa entrata è 
di un solo carattere scanf aggiunge '\0' come terminatore della 
stringa e qualche variabile viene sporcata.
occorre trasformare carattere in una stringa e leggere sempre e solo 
il primo.
include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main()
{
   char parola[25];
   char ind_parola[25];
   int tentativi = 0;
   int i, prove = 0;
   int indovinato = 0;
   char carattere[4];
   printf("Inserisci la parola segreta:\n");
   scanf("%s", &parola);
   i = 0;
   while (parola[i] != '\0') {
         ind_parola[i] = '_';
         i++;
   }
   ind_parola[i] = '\0';
   tentativi = i;
   while ((prove < tentativi) && (indovinato == 0)) {
         puts("Inserisci carattere:");
         scanf("%s", carattere);
        i = 0;
         while (parola[i] != '\0') {
                 printf("ciclo while i=%d\n", i);
                 if (parola[i] == *carattere) {
                         printf("i=%d parola[%d]=%c", i, i, parola[i]);
                         ind_parola[i] = *carattere;
                         //parola[i];
                         printf("ind_parola=%c\n", ind_parola[i]);
                 }
                 i++;
                 printf("> %s \n", ind_parola);
                 //indovinato = (strcmp(parola, ind_parola) == 0);
                 //printf("indovinato= %d corrette=%d\n", indovinato, 
corrette);
         }
         indovinato = (strcmp(parola, ind_parola) == 0);
         prove++;
         printf("prove=%d\n", prove);
         printf("=> %s \n", ind_parola);
   }
   printf("prove=%d\n", prove);
   printf("%s \n", ind_parola);
   return 0;
}
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >