代码之家  ›  专栏  ›  技术社区  ›  ggkmath

如何寻址(一维)数组的一部分?

  •  1
  • ggkmath  · 技术社区  · 14 年前

    我是C编程的新用户。我试过在网上调查这个问题,但找不到答案…如何访问C中数组的一部分?例如,

    int Data[4]
    int Input[32]
    

    做什么的语法是:data=input[12:15]这样

    Data[0] = Input[12]
    Data[1] = Input[13]
    Data[2] = Input[14]
    Data[3] = Input[15]
    

    实际上,我尝试使用TCP套接字填充数组的一部分:

    recv(MySocket, YRaw[indx:indx+1024], sizeChunk, 0)
    

    我希望接收到的数据放在Yraw数组中,从数组索引“indx”到“indx+1024”。

    事先谢谢,GKK

    3 回复  |  直到 14 年前
        1
  •  1
  •   Matti Virkkunen    14 年前

    对于从一个数组复制到另一个数组,可以使用 memcpy :

    #include "string.h"
    
    memcpy(&input[12], &data[0], 4*sizeof(int)); /* source, destination, number of bytes to copy */
    

    在recv的情况下,您要做同样的事情-传入指向开始的指针和字节数:

    recv(sock, &YRaw[indx], sizeChunk*sizeof(int), 0); /* sizeChunk is hopefully 1024 */
    

    编辑: 我忘记了第二个示例中的sizeof,所以添加了它。

        2
  •  0
  •   Adam Butler    14 年前

    可以使用memcpy

        3
  •  0
  •   terminus    14 年前

    您可以使用指针算法:

    recv(MySocket, YRaw + indx, sizeof(int) * 1024, 0);
    

    在这种情况下,recv将第一个int放在yraw[indx],第二个int放在yraw[indx+1]等等。

    在这个例子中,我假设您希望从套接字中读取整数。

    另外,不要忘记检查返回值。