memchr返回意外字符

时间:2017-06-18 17:55:28

标签: c

我尽力了解memchr函数,但遇到一些简单输出的问题。我在* newchar的末尾获得了额外的字符。

#include <stdio.h>
#include <string.h>

int main() {
    char plus[6] = "12+123";    
    char *newchar = (char*) memchr(plus,43,3);
    printf("%s",newchar);
}

输出:

+123( '

我希望得到&#34; +123,&#34;为什么它会给我额外的角色?我注意到输出是一致的,这使我早先感到困惑,看起来这些都不是从内存中随机抓取的,而是由memchr函数引起的。

1 个答案:

答案 0 :(得分:1)

char plus[6] = "12+123";

您已经定义了一个大小为6的数组,并用6个字符初始化它。你没有为NUL终结器留下足够的空间。字符串末尾有垃圾,printf不知道何时停止打印。

执行此操作,允许字符串自动调整大小:

 char plus[] = "12+123";