>

간단한 어셈블리 언어를 에뮬레이트해야합니다. uint8_t 테이블로 표현하기로 선택한 256 바이트의 메모리가 있습니다.  (바이트이므로) : RAM[256] .

내 문제는 코드를 16 진수로 입력하여 다음과 같은 줄을 가져야한다는 것입니다.

scanf("%02X", &RAM [arg]);

또는

scanf("%02X", &RAM[RAM[arg]]);

간접 수준에 따라.

이것은 경고를 생성 할뿐만 아니라 :

format ‘%X’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘uint8_t * {aka unsigned char *}’

하지만 RAM에서 한 번에 4 바이트를 '삭제'합니다. % 02X 형식이 올바른 선택은 아니지만 16 진수를 입력하는 다른 방법을 찾을 수 없습니다.

scanf("%" SCNx8, size);  잘 작동하지만 이제는 파일에서 코드를 읽어야합니다. 파일은 다시 16 진수이며 모든 값은 공백이나 개행 문자로 구분됩니다.

나는 lu = fscanf(prog, "%" SCNx8, size); 를 시도  하지만 지금 다음과 같은 경고가 나타납니다.

format ‘%hhx’ expects argument of type ‘unsigned char *’, but argument 3 has type ‘int’ [-Wformat=]


lu = fscanf(prog, "%" SCNx8, size);

  • 답변 # 1

    이 경우 올바른 형식 지정자는 다음과 같습니다 :

    scanf("%" SCNu8, &RAM[i])
    
    

    결국 당신은 uint8_t 를 읽고 있기 때문에  유형 변수.

    이 작업을 성공적으로 수행하려면 <inttypes.h> 헤더를 포함해야합니다. .

    16 진수의 경우 형식 지정자는 SCNx8 입니다. .

  • 이전 Python - 파이썬 - 문자열을 여러 번 연결
  • 다음 python - 약관에 따라 데코레이터를 사용할 수 있습니까?