繁体   English   中英

我对sprintf的使用有问题吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM