[英]Is there something wrong with my usage of sprintf?
我在Arduino中使用此功能将字符串填充为40个字符(LCD的宽度),因此在编写过程中,它将清除上次写入后留下的所有字符。
问题是当我使用它时,它使我的RF24模块无法发送...(其他一切仍在运行,并且可以接收)我知道这很奇怪...
void printLine(char* line){
sprintf(line, "%-40s", line);
lcd.writeString(line);
}
有人指出,不应该逐行写入行,我纠正了这个问题,但存在相同的问题。 此功能也有相同的问题:
void emptyLine(){
sprintf(line, "%-40s", "");
lcd.writeString(line);
}
这是“行”的声明(从代码顶部开始)
char line[lcdCols];
您正在尝试写入要读取的字符缓冲区。
根据C99标准:
sprintf
[...]如果复制发生在重叠的对象之间,则行为未定义。
实际上,这可能只会导致无限循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.