【发布时间】:2012-10-17 08:09:37
【问题描述】:
我正在尝试在 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;
}
但是,当我有这个主要功能时:
int main()
{
char *a = "thisisalongstring";
char *c;
c = substring(a, 2, 5);
printf("%s", c);
return 0;
}
输出是:
isisa
<random characters>
对调试代码有帮助吗?
【问题讨论】:
-
<random characters>这是因为您正在访问随机内存。printf()需要\0才能知道您的区域内存在哪里结束。 -
如果将 char * 声明为 s 而不是 c,则更具可读性
标签: c string pointers substring