c - 在 C 中更新字符串

标签 c arrays string pointers strcpy

我在小型微型计算机上有一个功能,可以一次从 UART 端口发送一个字符。

USART_0_write('x');

这会导致字符 x 从串口输出。

我创建了这个有效的函数:

char source[] = "Test Text.";
for (uint8_t i=0; i < strlen(source); i++){
    USART_0_write(source[i]);
}

我想做的只是动态更新我发送的字符串,而不是为我发送的每个内容创建不同的数组。

我基本上想做我假设 strcpy 所做的事情,但我无法使该功能正常工作。我得到了一个使用strcpy编译过一次的版本,但它肯定是内存泄漏,因为当我运行它时,芯片上的所有I/O端口都变了。

strcpy(source,"Different String");

我想做这样的事情然后再次调用我的第一个函数并让它从串行端口打印新的更新字符串。

我理解指针的概念,但是我看语法解释的一切我都看不懂。我尝试了很多不同的组合,将开始放在一切之前和之后。不管怎样,这都是彻底的失败。

我阅读了这个很好的解释,但是,就像那里的大多数解释一样,当它谈论动态更新字符串时,事情就停止了,实际上提供了一行代码,它实际上使它在底部工作: https://www.cs.bu.edu/teaching/cpp/string/array-vs-ptr/

谢谢。

附加信息:

(我编辑了我的帖子并添加了这个,因为如果你不“回答”你自己的问题就不能在下面添加新帖子,并且评论回复部分不允许任何格式并且限制为 500 个字符,这是愚蠢)。

我正在尝试通过执行以下操作来创建菜单:

my_string = "Menu item 1";
sendString(my_string); //function to iterate through characters sending them
my_string = "Menu item 2";
sendString(my_string); //function to iterate through characters sending them
my_string = "Menu item 3";
sendString(my_string); //function to iterate through characters sending them

现在可能有一种方法需要硕士学位才能做到这一点。我只是想让这个愚蠢的菜单起作用。我实际上是在创建单独的函数,为每一行创建一个新的字符数组,这是错误的做法,但这是我在与此斗争数小时后唯一能弄清楚的事情。

最佳答案

假设您写的确实是您尝试过的......

source[] 是一个 10 字节的数组。

“不同的字符串” 是 17 个字节长。

你溢出了 source[] 并破坏了谁知道什么。

关于c - 在 C 中更新字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53354573/

相关文章:

字符串文字可以与 char* 连接吗?

c - 为什么它不调用 fgets?

java - 线程 “main”中的异常java.lang.NegativeArraySizeException

java.lang.ArrayIndexOutOfBoundsException 对象数组

arrays - 引用 Delphi 变体数组而不进行复制

python - 字符串必须包含多个单词

java - 在Java中仅在第一次出现时使用特殊符号分割字符串?

file - C 错误 : expected expression before ‘FILE’

c - 当key匹配时将节点发送到链表的前面。 C语言

c - 即使我使用 % 1000000007 它仍然结果为 0