如何在C中提取char数组的一部分?

时间:2013-07-31 21:21:36

标签: c arrays string

我在终端的hexa中收到10个字节(010830FFFFFFFFFF0304),我只需要在另一个char数组中只编写这个数组的一部分(这5个字节FFFFFFFFFF)。

这是代码:

#include <stdio.h>

void main(){
    char buffer[];  // buffer size in bytes
    int i;          // counter
    while(true){
        for(i=0; i<buffer; i++){
            buffer[i] = getc();
        }
    }
}

如何提取这部分数组?

3 个答案:

答案 0 :(得分:6)

常规修正:

  • 我宣布buffer(10)的实际尺寸,你没有尺码。
  • 我为你的答案(middle)宣布了一个数组,你没有这样的空间。
  • 我循环了10次,而不是非感觉比较i<buffer
  • 我删除了永远不会终止的外部while(true)
  • I memcpy从输入缓冲区到答案,共5个字符。

你的问题非常不明确且不准确,所以我只能猜测你的意图。

void main()
{
    char buffer[10]; // buffer size in bytes
    char middle[5];
    int i; // counter

    for(i=0; i<10; ++i){
        buffer[i] = getc();
    }

    memcpy(middle, &buffer[3], 5*sizeof(char));

    for(i=0; i<5; ++i)
    {
        printf("%x",middle[i]);
    }
    printf("\n");
}

答案 1 :(得分:0)

    #include <stdio.h>

    void main(){
    char buffer[64]; // buffer size in bytes
    char result[10];
    int i; // counter
    while(1){
    for(i=0; i<10; i++){
    buffer[i] = getc(stdin);
    }
    for(i=0; i<5; i++){
       result[i] = buffer[i+3];
    }
    result[i] = 0;  // end string
    printf("%s\n",result);
    }
}

答案 2 :(得分:0)

因为看起来你有一个while(true)循环,所有你需要做的就是创建另一个char数组并将所需的字符放入其中:

#include <stdio.h>

void main()
{
    char buffer[10]; // buffer size in bytes
    char smallBuf[5]; // buffer size in bytes
    int i; // counter

    for(i=0; i<10; i++)
    {
        buffer[i] = getc();
    }

    for(i=0; i<5; i++)
    {
        smallBuf[i] = buffer[i + 3];
    }
}