2013-03-26 2 views
2

제 과제 중 하나인데 아래의 전체 구조체를 문자열 형식으로 인쇄하는 작업이 있습니다.구조체를 C 언어로 된 문자열 형식으로 출력하십시오.

Struct test 
{ 
    int a, 
    char char1,char2; 
} 

출력은 다음과 같아야합니다. 구조는 a = 10, char1 = b, char2 = c; 나는 그것이

printf("Structure is a=%d,char1=%c, char2= %c", s.a,s.char1,s.char2); 

그러나 실시간으로

를 사용하여 매우 간단합니다 알고, 나는 큰 구조를 많이하고 난 구조의 각 요소에 대한 액세스 지정자와의 printf 문을 쓸 수 없습니다. 구조체 변수 또는 일부 다른 변수를 지정하여 전체 구조체를 인쇄하는 다른 방법이 있습니까?

+6

아니요 인쇄 방법을 알고있는 코드가 없어도 전체 구조를 간단하게 인쇄 할 수있는 방법이 없습니다. –

+3

C에는 리플렉션이 없습니다. 이는 일반적으로 그런 것을 지원하는 데 사용됩니다. 상황에 따라 사전 처리기로 시뮬레이션하거나 디버그 정보와 함께 플랫폼 특정 코드를 사용하여 시뮬레이션 할 수 있습니다. –

+0

@JonathanLeffler 기술적으로, 여러분이 크기를 알고 있다면 단순히 Struct의 메모리 주소를 가져 와서 다음 n 바이트의 메모리를 덤프 할 수 있습니다. 그것은 매우 유용하지는 않을 것이다. – Polar

답변

6

일부 언어는 반사라는 개념을 통해이를 지원 순수 C.에서이 작업을 수행 할 수있는 방법은 없습니다,하지만

코드 -이 - 쓰기 - 코드가 가장 좋은 방법입니다 C.에서 사용할 수 없습니다. 모든 구조체를 찾아서 인쇄 할 수있는 함수를 빌드하는 스크립트를 작성하십시오.

-1

내가 생각할 수있는 가능한 해결책 중 하나는 구조의 전체 내용을 임시 파일에 저장할 수있는 fread funtion의 도움을받을 수 있다는 것입니다. 사용 : STRUCTURE_OBJECT이 strucure의 데이터 요소의 이름입니다

fread(&STRUCTURE_OBJECT, sizeof(YOUR_STRUCTURE), 1, FILE_POINTER); 

합니다. 그런 다음 "cat"및 "piping"등과 같은 Linux 기반 명령을 사용하여 출력을 빠르게 볼 수 있습니다.

관련 문제