Странные символы при чтении из файла с помощью fgetc

Когда я печатаю ответ переменной, он содержит несколько странных символов. В чем может быть причина?

int flag=0;
char answer[512];
char a[2];
a[1]='\0';

int c;
int status=1;
do {
      c = fgetc(pp);
      if( feof(pp) ) {
         break ;
        }
        if(c=='F' || status==0){
                a[0]=(char)c;
                strcat(answer,a);
                status=0;
        }
   } while(TRUE);

person Tosh    schedule 14.12.2017    source источник
comment
Возможно файл содержал странные символы   -  person M.M    schedule 14.12.2017
comment
Установить answer[0]=0   -  person MFisherKDX    schedule 14.12.2017


Ответы (1)


strcat ожидает, что строка назначения будет допустимой, что означает, что она должна заканчиваться нулем. Вы не являетесь явным нулем, завершающим строку answer. Добавьте answer[0]=0 перед циклом.

person MFisherKDX    schedule 14.12.2017
comment
@чукс. Я думаю, что ОП правильно понял a[1]=0. Но пропустил answer[0]=0. - person MFisherKDX; 14.12.2017
comment
Да, комментарий удален. - person chux - Reinstate Monica; 14.12.2017
comment
спасибо @MFisherKDX, ваше предложение было исправлением. Так что даже пустая строка должна заканчиваться 0? - person Tosh; 16.12.2017