C18 sprintf()给出了语法错误

时间:2018-03-05 14:55:56

标签: c printf c89 c18

我似乎在行

上有语法错误
writer = csv.writer(outputFile, delimiter = 't')
添加sprintf()行后,在以下代码中

。代码工作直到我添加了char文本,textresult和sprintf()。我似乎无法找出它的错误。我正在使用C18编译器。代码用于使用SPI将数据写入SD卡。 char txt []是带温度传感器的测量值,例如:23,5。但我想为此添加更多文字。目标是每隔5分钟在SD卡上存储一个测量值,以及时间戳等。我使用的是PIC18f27j53。

FSFILE *file; 

2 个答案:

答案 0 :(得分:0)

在声明变量的位置后移动sprintf(...)

答案 1 :(得分:0)

我不知道ftc做了什么,但txt可能不是'\0' - 终止,如果 你想把它用作一个字符串,它必须是'\0' - 终止。

此外,您的textresult是一个空数组,如果您愿意,您会发生什么? 尝试在没有可用空间的地方写东西?

unsigned char textresult[20];

是正确的。

另请注意,%c中的printf需要一个char值,您正在通过 指向整个char s序列的指针,这是未定义的行为。你必须 使用%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来电之前