c - 在 C 中搜索 char 数组以查找数组中的位置

标签 c arrays search

不确定是否有人问过这个问题,而且我真的不知道如何问:我将发布我拥有的代码,我知道我还很遥远,但我想表明这一点我尝试过但失败了。

我将发布代码,然后解释它,然后提供更多信息:

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/

相关文章:

c - 为什么 strcpy 将垃圾字符附加到一小部分字符串的末尾?

java - Java 删除如何影响通用数组?

Java:在多个文件中搜索一个单词

dataframe - pyspark:计算连续的 1/0 的数量,并在条纹太短/太长时更改它们

javascript - JS-textarea行到javascript数组

ios - 按名称搜索核心数据用户

c++ - 返回连续数字的逻辑假设数组包含元素 1,9,2,3,4,9,6,7,8 那么它应该返回 2,3,4,6,7,8?

c - 尝试创建一个对数组中所有值进行平方的函数。最后一个值出现奇怪的数字

c - 在 glib 的 GObject 中,我混淆了从父类派生的子类的实例对象是否继承了父类的属性?

java - 如何在android中比较int[]数组和int?