【发布时间】:2014-09-16 04:32:19
【问题描述】:
不确定是否有人问过这个问题,我真的不知道该怎么问:我将发布我拥有的代码,我知道我离得很远,但我想表明这一点我尝试过,但失败了。
我将发布代码然后解释它,然后提供更多信息:
while(i<41)
{
if (buffer[i] != 0)
{
newplace = i;
}
i++;
}
buffer 是一个长度为 42 的 char 数组。最后一个位置是一个空占位符。
缓冲区将从 END 开始接收值。我以相反的顺序进行。问题是当我打印它时,它会用 0 填充第一个位置,这很烦人。我的目标是找到第一个不是 0 的位置,并将其保存到变量(newplace)作为占位符。保存后,我可以使用从这个新占位符开始的循环打印数组。这听起来很基本,我可能非常接近(或大错特错)。
我觉得一旦我找到了我需要在那里休息的价值,因为它会继续寻找下一个价值并改变它。每次我尝试这个都会给我一个错误。
我也知道最后的 i++ 看起来很愚蠢。别担心我知道。我只是放弃了尝试修复它。
最后,如果我错过了什么,请告诉我。我将编辑或添加代码。谢谢。
编辑:这是它的打印内容:000000000000000012345。我希望它打印 12345。
编辑:现在输出到数组的末尾,因为 i 最多计数 40。它进入我的第二个打印循环并打印 newplace,因为它打印出 40,然后打印从 40 到 41 的数组。与最后一位一样。
编辑:我觉得我越来越近了。我对其进行了修改,因此它比较了 2 个字符数组而不是数组和字符。
for(;i<41;i++)
{
if (buffer[i] != "0123456789ABCDEF"[0])
{
newplace = i;
//break;
}
}
"0123456789ABCDEF"[0] 是我所做的全部更改。它打印的是不是 0 的最后一个已知值:这意味着:如果有 1010,它会查看 LAST 1 并打印 10。我希望它找到 FIRST 1。
我也尝试了 100,它打印了 100。但如果它是 10100,它将打印 100,我希望它打印 10100。
【问题讨论】:
-
为什么不在while循环中打印而不是保存到另一个变量?
-
因为我想找到一个起点。即:000000123 vs 123。这就是我想要的。
-
但是如果你在
if里面打印你会得到123... -
Every time I try this it gives me an error.为什么人们认为可以这样说却不告诉我们错误是什么? - 你甚至没有描述它在什么方面不起作用! -
但这是正确的说法吗?