所以我有以下问题

if(buffer[i]== ' '&&buffer[i+1]==' '&&buffer[i+2]==' ')
    {


        buffer[i]= '*';

        putchar(buffer[i]);

        i = i + 2

        continue;
    }

    putchar(buffer[i]);

    i++;
}


这部分代码用*代替3个空格。

所以我的挑战是将所有数组访问都替换为指针算术

char *tmp0_pointer; // initialised in  main function


 if(*tmp0_pointer== ' '&&*tmp0_pointer+1==' ' &&*tmp0_pointer+2==' ' )

{
   tmp0_pointer = buffer+i;

      *tmp0_pointer= '*';
    i = i + 2

    continue;
}
tmp0_pointer = buffer+i;
putchar(*tmp0_pointer);

i++;
}


但是,下面的代码无法提供相同的结果。
我有一种感觉,我没有正确地增加指针。
有人可以帮我吗?
先感谢您。

最佳答案

给定一个数组int arr[5] = { 1, 2, 3, 4, 5 };

并且您有一个指针ptr指向数组的开始,通常ptr + i指向i数组前面的位置,该位置与arr[i];等效。

因此,在使用指针算术*(ptr + 2) === arr[2]等的情况下,需要括号。

您可以继续增加指针ptr++或其他任何值,但是必须确保不要超出数组内存空间。

关于c - 增加指针而不是增加数组及其索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49719460/

10-15 02:15