-5

我在终端上收到 10 个字节 ( ) 的 hexa ,我只需要在另一个 char 数组010830FFFFFFFFFF0304中写入这个数组的一部分(这 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();
        }
    }
}

如何提取这部分数组?

4

3 回答 3

6

一般修复:

  • 我声明了 (10) 的实际尺寸buffer,而您没有尺寸。
  • 我为您的答案 ( ) 声明了一个数组,middle您没有这样的空间。
  • 我循环 10 次,而不是无意义的比较i<buffer
  • 我删除了 external while(true),它永远不会终止。
  • 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");
}
于 2013-07-31T21:27:40.253 回答
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);
    }
}
于 2013-07-31T21:26:35.997 回答
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];
    }
}
于 2013-07-31T21:26:47.450 回答