C 为什么printf没有';无法正确显示我的数组?

C 为什么printf没有';无法正确显示我的数组?,c,C,我在使用指针和数组时有点问题。问题在于我有一个函数,它从原始数组创建一个新数组,从参数传递的句点中选择合适的字符。以下是原型: 我使用了一个指向我想要返回的数组的指针,因为我不能返回新的字符数组本身。因此,我将这个指针保存在main.c中,保存到一个变量中,然后执行printf: 但是printf显示了我生成的数组的一个简短版本。如果我从我得到的函数打印: VTVFNSTRTMWIAPJHQSBLZGTIAPYOGYTZHVUSWZSFEVPSDBLJJGMFWOIKUVMOOTWSJWTG

我在使用指针和数组时有点问题。问题在于我有一个函数,它从原始数组创建一个新数组,从参数传递的句点中选择合适的字符。以下是原型:

我使用了一个指向我想要返回的数组的指针,因为我不能返回新的字符数组本身。因此,我将这个指针保存在main.c中,保存到一个变量中,然后执行printf:

但是printf显示了我生成的数组的一个简短版本。如果我从我得到的函数打印:
VTVFNSTRTMWIAPJHQSBLZGTIAPYOGYTZHVUSWZSFEVPSDBLJJGMFWOIKUVMOOTWSJWTGUSMBEGVLXJUTKTMKZVVTTWLYEQHUWK

从main.c:
vtvfnstrtmwiapjhqsblzgti��j

我怎样才能解决它? 还有一个问题:如何重用此数组并将其传递给另一个参数为数组本身(char chain[])的函数?

提前谢谢

可能
get\u string\u period
返回指向局部变量的
char
指针,因此当函数返回时,它实际返回的内容将指向无效地址


在这种情况下,有时会出现分段错误,而不是输出一些垃圾值

字符数组以空字节终止。printf语句就是这样工作的。它查找空字节以结束字符数组。如果您的char*没有空字节,printf将尽可能长时间地保持打印

返回的指针指向一个局部变量数组,因此当函数返回时它不再有效。您是否正确地在字符串末尾添加了一个
NULL
终止符?请允许我试一试,您正在从
get\u string\u period()返回一个局部缓冲区
?在
get\u string\u period
中如何声明数组副本?请发布
get\u string\u period()
的代码以获得更完整的答案。是的,我认为你是对的。谢谢于浩的回答。很抱歉犯了这么大的错误。@JorgeVicente如果你认为答案有用,你可以接受segfault会更好,而不是更糟。b快速失败,然后产生不正确的输出(即静默失败)。字符串以空字节终止。
char
数组可以是,也可以不是
printf的
“%s”
格式需要指向字符串(第一个字符)的指针。
char *get_string_period(char chain[], uint8_t period);  
char *ptr = get_string_period(chain, period);
printf(“The string of the new array is %s”, ptr);`