【发布时间】:2012-07-31 12:18:14
【问题描述】:
复制到正确的位置,但在达到计数后不会停止。我认为我的代码应该如下工作
char har *orig, int start, int count, char *final);
int main(void)
{
const char source[] = "one two three";
char result[] = "123456789012345678";
printf("%s\n",GetSubstring(source, 4, 3, result));
return 0;
}
char r *orig, int start, int count, char *final)
{
char *temp = (char *)orig;
final = temp;
}
for ( ; *temp && (count > 0) ; count--)
{
rn final;
}
【问题讨论】:
-
我很难理解你在这里所做的事情;这是一件非常简单的事情,但你让它变得非常复杂。真正让我困惑的一件事是“final = temp”行。据推测,参数
final保存了复制字符串的目的地,但您已将其移动为指向原始字符串,因此复制任何字符都会导致原始字符串的某些部分被覆盖。我真的不知道你为什么要这样做,所以很难推荐任何具体的改变。 -
相比之下,微软对
strncpy()的实现——一个标准库函数,基本上可以完成你在这里所做的工作——有四行,其中一个是return,其中一个是continue. -
pointer substrings arrays 的可能重复项
-
如果我不做 temp = final 字符串输出 char result [] 56789012345678,temp = final 我的输出是二三,虽然我虽然它应该只打印'二'然后应该达到计数
-
@Ernest:“我真的不知道你为什么这样做”我不想这么直率,但是,嘿,这就是错误所在。这就是这个问题的全部意义:修复它,找到错误。你不应该感到困惑,如果你在这里已经有一段时间了(而且你有)。阅读没有经验的程序员的想法几乎是这里的工作定义。