gpt4 book ai didi

c - 通过添加空格 (' ' ) 进行字符串操作,最大长度为 20

转载 作者:行者123 更新时间:2023-11-30 15:28:40 25 4
gpt4 key购买 nike

我有一个用avr gcc为atmega128编写的函数,如果字符串的长度小于20,则可以向字符串添加额外的空格,以便在LCD上显示它。当我不连续使用此函数时,输出将按预期进行,但是当我连续使用它并显示输出时,仅显示最后一个字符串。是什么原因导致这样的问题呢?

void parse(uint8_t* str, uint8_t endlen, uint8_t charac)
{
//str is string passed, charac is the fill character, endlen is length of string passed
uint8_t len = 0; // length count start from 0

while(str[len] != '\0') {
len++;
}
while(len < endlen){
str[len] = charac;
len++;
}
str[endlen] = '\0';
}

当我将此程序称为

int main(void){
uint8_t str1[20] = "0123456789";
uint8_t str2[20] = "abcdefghij0123456789";

parse(str1, 20, ' ');
fprintf(stderr, "%s", str1);
parse(str2, 20, ' ');
fprintf(stderr, "%s", str2);
while(1);
}

输出是:

0123456789

abcdefghij0123456789

但是当我将该函数调用为

int main(void){
uint8_t str1[20] = "0123456789";
uint8_t str2[20] = "abcdefghij0123456789";

parse(str1, 20, ' ');
parse(str2, 20, ' ');
fprintf(stderr, "%s", str1);
fprintf(stderr, "%s", str2);
while(1);
}

输出是:

abcdefghij0123456789

最佳答案

您将 '\0' 写入字符串的第 20 个元素(该元素不存在)。这是未定义的行为。

关于c - 通过添加空格 (' ' ) 进行字符串操作,最大长度为 20,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26501187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com