我尽力了解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函数引起的。
答案 0 :(得分:1)
char plus[6] = "12+123";
您已经定义了一个大小为6的数组,并用6个字符初始化它。你没有为NUL终结器留下足够的空间。字符串末尾有垃圾,printf
不知道何时停止打印。
执行此操作,允许字符串自动调整大小:
char plus[] = "12+123";