codice:
#include<stdio.h>
#define MAX 100
int main(void)
{
char nome[MAX];
int i, j;
for(i=0; (nome[i]=getchar())!='\n'; i++)
;
nome[i]=0;
for(j=0; j<=i; j++)
printf("%c", nome[j]);
return 0;
}
Il tuo errore fondamentale era di mettere
codice:
nome[i]=getchar()!='\n'
invece di
codice:
(nome[i]=getchar())!='\n'
; infatti l'operatore != aveva la precedenza ed era il risultato del confronto getchar()!='\n' ad essere assegnato a nome[i]. Tale risultato, fino a quando getchar() non restituiva '\n', era uguale a 1, carattere che nel codepage OEM viene rappresentato come uno smile sorridente.