C18 sprintf() выдает синтаксическую ошибку

Кажется, у меня есть синтаксическая ошибка в строке

FSFILE *file; 

в следующем коде после добавления строки sprintf(). Код работал до тех пор, пока я не добавил текст char, textresult и sprintf(). Я не могу понять, что с ним не так. Я использую компилятор C18. код предназначен для записи данных на SD-карту с использованием SPI. char txt[] - это значение измерения с датчиком температуры, например: 23,5. Но я хочу добавить больше текста к этому. Цель состоит в том, чтобы каждые 5 минут сохранять измерения на SD-карте вместе с отметкой времени или чем-то еще. Я использую PIC18f27j53.

void writeFile()
{
    unsigned char txt[]={ftc(result,0),ftc(result,1),0x2C,ftc(result,3)};
    unsigned char text[]= "hello";  
    unsigned char textresult[];   
    sprintf(textresult, "%c%c", txt, text); 
    //unsigned char size = sizeof(result)-1;
    FSFILE *file;
    file = FSfopenpgm("DATA.TXT", "w");
    if(file == NULL)while(1);
    if(FSfwrite((void *) txt, 1, 4, file)!=4)while(1);
    if(FSfclose(file)!=0)while(1);
}

2 ответа

Я понятия не имею что ftc делает, но ваш txt не может быть '\0'-определено, если вы хотите использовать его в качестве строки, оно должно быть '\0'-завершённый.

Также ваш textresult пустой массив, что, по вашему мнению, произойдет, если вы попытаетесь записать материал там, где нет свободного места?

unsigned char textresult[20];

было бы правильно.

Также обратите внимание, что %c в printf ожидает одного char значение, вы передаете указатель на всю последовательность charс, это неопределенное поведение. Вы должны либо использовать %s (и для этого txt должно быть '\0'определено) или вы проходитеtxt[0], один char:

sprintf(textresult, "%c%c", txt[0], text); 

// or

unsigned char txt[]={ftc(result,0),ftc(result,1),0x2C,ftc(result,3), 0};
...
sprintf(textresult, "%s%c", txt, text); 

И если вы хотите, чтобы все переменные объявлялись в начале функции, переместите

FSFILE *file;

перед sprintf вызов.

Переместить sprintf(...) после того, как вы объявляете свои переменные.

Другие вопросы по тегам