【发布时间】:2009-03-31 04:25:40
【问题描述】:
我有遗留的 C 代码库在工作,我发现很多函数实现都采用以下风格。
char *DoStuff(char *inPtr, char *outPtr, char *error, long *amount)
{
*error = 0;
*amount = 0;
// Read bytes from inPtr and decode them as a long storing in amount
// before returning as a formatted string in outPtr.
return (outPtr);
}
使用 DoStuff:
myOutPtr = DoStuff(myInPtr, myOutPtr, myError, &myAmount);
我觉得这很迟钝,当我需要实现类似的功能时,我最终会这样做:
long NewDoStuff(char *inPtr, char *error)
{
long amount = 0;
*error = 0;
// Read bytes from inPtr and decode them as a long storing in amount.
return amount;
}
使用 NewDoStuff:
myAmount = NewDoStuff(myInPtr, myError);
myOutPtr += sprintf (myOutPtr, "%d", myAmount);
我不禁想知道我在上面的示例中是否缺少某些东西,是否有充分的理由使用这种方法?
【问题讨论】:
-
+= sprintf 是什么?
-
msdn.microsoft.com/en-us/library/ybk95axf(VS.71).aspx 写入字符串,然后将指针向前移动已写入的字节数。
-
不应该是 = 而不是 +=?
-
没有。 sprintf 返回写入的字节数。我想在 sprintf 调用之后将 char* 指针向前移动那么多字节,以便下一个 sprintf 调用充当附加。在上面的 MSDN 链接中有类似的例子。
标签: c