不确定是否有人问过这个问题,而且我真的不知道如何问:我将发布我拥有的代码,我知道我还很遥远,但我想表明这一点我尝试过但失败了。
我将发布代码,然后解释它,然后提供更多信息:
while(i<41)
{
if (buffer[i] != 0)
{
newplace = i;
}
i++;
}
buffer是一个长度为42的字符数组。最后一个位置是空占位符。
buffer将从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,它会查看最后一个 1 并打印 10。我希望它找到第一个 1。
同样,我尝试了 100,它打印了 100。但如果它是 10100,它将打印 100,我希望它打印 10100。
最佳答案
int i = 0;
int start = -1;
while(buffer[i] != 0) { // Assumes 0 terminated array
if (buffer[i] == '0') {
start = i;
break;
}
i++;
}
if (start >= 0) {
// start is valid, so do output...
}
关于c - 在 C 中搜索 char 数组以查找数组中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25860683/