「int e = 0;」を削除すると、cに次のプログラムがあります。私はセグフォルトを取得します、誰かが理由を知っていますか? それも使われてない?
2 つ目は、最初の 3 つの int を取得するための最良の方法は何ですか? memcpy を使用していますが、最初のものでは正しく動作しません。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int test()
{
unsigned char string1[] = {0xce,0x01,0x00,0x00,0xe9,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x74,0x65,0x73,0x74};
//0xce,0x01,0x00,0x00 this should be the first int
//0xe9,0x00,0x00,0x00 Second int
//0x01,0x00,0x00,0x00 third int, the rest is the text "test"
int e = 0;// when I comment this one I get Segmentation fault
unsigned int int1 = 0;
unsigned int int2 = 0;
unsigned int int3 = 0;
int length = 0;
int size = 0;
size = sizeof(length);
memcpy(&int1, string1, length); printf("%d\n",int1); //should be 461
length += size;
memcpy(&int2, &string1[length], length); printf("%d\n",int2); //shoud be 233
length += size;
memcpy(&int3, &string1[length], length); printf("%d\n",int3); //should be 1
length += size;
printf("%s\n",&string1[length]);//text should be test
}
int main()
{
test();
}
「int e = 0;」の場合の出力は以下のとおりです。存在する
0
233
1
test
「int e = 0;」の場合の出力は以下のとおりです。コメントされています
0
233
1
Segmentation fault (core dumped)