我在终端的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();
}
}
}
如何提取这部分数组?
答案 0 :(得分:6)
常规修正:
buffer
(10)的实际尺寸,你没有尺码。middle
)宣布了一个数组,你没有这样的空间。i<buffer
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");
}
答案 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];
}
}