我正在尝试在C中实现子字符串函数.这是我到目前为止所拥有的:
char *substring(const char* str, int beg, int n)
{
char *ret = malloc(n+1);
strncpy(ret, (str + beg), n);
*(ret+n) = '\n';
return ret;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我有这个主要功能时:
int main()
{
char *a = "thisisalongstring";
char *c;
c = substring(a, 2, 5);
printf("%s", c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
isisa
<random characters>
Run Code Online (Sandbox Code Playgroud)
有没有帮助调试代码?
你应该null终止字符串.
*(ret+n) = '\n';
Run Code Online (Sandbox Code Playgroud)
应该
*(ret+n) = 0;
Run Code Online (Sandbox Code Playgroud)
注意:
您还应该确保子字符串不超过字符串大小:
beg+n < strlen(str)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2340 次 |
| 最近记录: |