Вы пишете в файл только в случае сбоя этого условия:
if(a!="") // incorrect comparison..warning: comparison between pointer and integer
, что никогда не происходит, поэтому вы никогда не перейдете к части else
.
Изменить тест на:
if(a!=' ')
EDIT:
Когда вы достигаете конца файла, вы просто завершаете программу, не записывая, что находится в массиве b
. Так что вам нужен еще один fprintf
после цикла while:
} // end of while loop.
b[i]='\0';
fprintf(fp2, "%.20s\n", b);
Хорошо, здесь идет код, который протестирован и работает отлично:)
while(1)
{
a=fgetc(fp1);
if(feof(fp1))
break;
if(a!=' ')
b[i++]=a;
else {
b[i]='\0';
fprintf(fp2, "%.20s\n", b);
i=0;
}
}
b[i]='\0';
fprintf(fp2, "%.20s\n", b);