这是我的功能.
char * substring(int begin, int end, char * string)
{
int size = end - begin + 1;
char * s = (char *)malloc (sizeof(size));
int i;
for (i = 0; i < size; i++)
{
s[i] = string[begin++];
}
return s;
}
Run Code Online (Sandbox Code Playgroud)
所以,让我们说我的字符串只应该是"我".但是当我稍后尝试打印出字符串时,我会得到I + 3个额外的字符,这些字符是无意的.我该如何解决?
首先,改变线
char * s = (char *)malloc (sizeof(size));
Run Code Online (Sandbox Code Playgroud)
至
char * s = malloc( size + 1 ); // + 1 for null terminator
Run Code Online (Sandbox Code Playgroud)
sizeof (size) 为您提供整数中的字节数(2到4到8,具体取决于您的平台),这不一定是您想要的.
接下来,使用该strncpy函数复制第一个size字符string:
strncpy( s, string, size );
Run Code Online (Sandbox Code Playgroud)
确保字符串以空值终止:
s[size] = '\0';
Run Code Online (Sandbox Code Playgroud)