C 113

파일 설명자에서 파일 포인터를 가져오려면 어떻게 해야 합니까?

파일 설명자에서 파일 포인터를 가져오려면 어떻게 해야 합니까? 가지고 놀고 있다mkstemp()파일 디스크립터를 제공하지만 포맷된 출력을 생성합니다.fprintf()에서 제공하는 파일 기술자를 쉽게 변환할 수 있는 방법이 있습니까?mkstemp()에FILE *사용하기에 적합한 구조fprintf()?사용방법: FILE* fp = fdopen(fd, "w"); FILE* f = fdopen(d, "w"); man fdopen 출력: 개요 #include FILE * fdopen(int fildes, const char *mode); 그fdopen()함수는 스트림을 기존 파일 기술자와 관련짓습니다.fildes스트림 모드는 파일 기술자 모드와 호환되어야 합니다.스트림이 다음 경유로 닫힐 때fclose(3),fi..

programing 2022.08.07

int64_t의 정의

int64_t의 정의 C/C++는 처음이라 기본적인 타입에 대해 몇 가지 질문이 있습니다. a) 어떤 차이가 있는지 설명해 주시겠습니까?int64_t ★★★★★★★★★★★★★★★★★」long )long int로는 둘 다 64번둘둘 중하 택택 택택 택? ??? 는 b)의 했습니다.int64_t웹상에서 큰 성공을 거두지 못했다.그런 질문에 대해 제가 상담해야 할 권위 있는 소식통이 있나요? c)를 사용하는 int64_t컴파일 하기 위해서, 나는 현재 포함시키고 있다.그 ?int64_t a) 어떤 차이가 있는지 설명해 주시겠습니까?int64_t ★★★★★★★★★★★★★★★★★」long )long int로는 둘 다 64번둘둘 중하 택택 택택 택? ??? 전자는 정확히 64비트의 부호 있는 정수형입니다.후자는 3..

programing 2022.08.07

C의 >>>= 연산자는 무엇입니까?

C의 >>>= 연산자는 무엇입니까? 동료에게 퍼즐로 주어졌을 때, 이 C프로그램이 실제로 어떻게 컴파일 되어 실행되는지 알 수 없습니다. 뭐야...>>>=한 '오퍼레이터'1P1과 .쨍그랑 GCC 서cc는 。"--?" #include int main() { int a[2]={ 10, 1 }; while( a[ 0xFULL?'\0':-1:>>>=a>>=a ★★★★★★★★★★★★★★★★★」>= a[ !!0X.1P1 ] ) 그대로의 「」0xFULL is is is is is와 0xF는 (16진수)를 뜻합니다.15ULL그냥 문자 그대로라고 명시할 뿐입니다.어떤 경우든, 부울로 따지면 그건 사실이니까0xFULL ? '\0' : -1'\0'숫자 값이 단순한 문자 리터럴입니다.0. 한 meanwhile.0X.1P1는 ..

programing 2022.08.03

디스크립터를 읽기 위한 논블로킹콜

디스크립터를 읽기 위한 논블로킹콜 fd 디스크립터를 가지고 있기 때문에 호출로 읽을 수 있습니다.read(fd, buffer,...)콜이 차단되어 있기 때문에 실제로 콜을 발신하기 전에 읽을 것이 있는지 확인하고 싶습니다.이거 어떻게 해?int flags = fcntl(fd, F_GETFL, 0); fcntl(fd, F_SETFL, flags | O_NONBLOCK); 위의 코드 스니펫에서는 이러한 디스크립터를 논블로킹액세스용으로 설정합니다.read 호출 시 데이터를 사용할 수 없는 경우 시스템콜은 -1의 반환값으로 실패하고 errno는 EAGAIN으로 설정됩니다.자세한 내용은 fnctl man 페이지를 참조하십시오. 또는 설정 가능한 타임아웃과 함께 select를 사용하여 지정된 시간 간격을 확인하거나..

programing 2022.08.01

C의 이 논리 AND 버전이 단락 동작을 나타내지 않는 이유는 무엇입니까?

C의 이 논리 AND 버전이 단락 동작을 나타내지 않는 이유는 무엇입니까? 네, 이건 숙제 질문이지만, 저는 이 주제에 대해 조사와 깊은 생각을 해봤는데, 이것을 이해할 수 없어요.이 질문에서는 이 코드 조각이 단락 동작을 나타내지 않으며 그 이유를 묻습니다.하지만 제가 보기엔 그게 단락 행동을 보이는 것 같은데, 왜 그렇지 않은지 누가 설명해 줄 수 있나요? C: int sc_and(int a, int b) { return a ? b : 0; } 가 이 경우, ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.a.프로그램은 평가하려고 하지 않습니다.b혀혀 、 하지 、 봐봐렸봐봐 。은 왜 '만져도'를 터치하는 거죠?b럴럴필 요요? ???이건 속임수 질문입니다. b는 입력 입니다.sc..

programing 2022.08.01

비트 필드를 사용하는 것은 어떤 경우에 가치가 있습니까?

비트 필드를 사용하는 것은 어떤 경우에 가치가 있습니까? C의 비트필드 구현을 사용할 가치가 있습니까?그렇다면 언제 사용됩니까? 에뮬레이터 코드를 확인했는데 칩 레지스터가 비트 필드를 사용하여 구현되지 않은 것 같습니다. 퍼포먼스상의 이유(또는 다른 이유)로 인해 회피되는 것입니까? 비트필드를 사용하는 경우가 아직 있습니까?(즉, 실제 칩 등에 장착하는 펌웨어)비트필드는 일반적으로 구조 필드를 특정 비트슬라이스에 매핑해야 할 경우에만 사용됩니다.이 경우 일부 하드웨어는 원시 비트를 해석합니다.예를 들어 IP 패킷헤더를 조립하는 경우가 있습니다.에뮬레이터가 비트필드를 사용하여 레지스터를 모델링해야 하는 설득력 있는 이유를 알 수 없습니다. 실제 하드웨어에는 전혀 영향을 주지 않기 때문입니다. 비트필드는 구..

programing 2022.08.01

부호 없는 데이터 유형은 무엇입니까?

부호 없는 데이터 유형은 무엇입니까? 난 이걸 본 적이 있다.unsigned"typeless" 타입은 여러 번 사용했지만 이에 대한 설명을 본 적이 없습니다.내 생각엔 그 편지들이 서로 주고받는 사람이 있을 것 같아요signed예를 들어 다음과 같습니다. static unsigned long next = 1; /* RAND_MAX assumed to be 32767 */ int myrand(void) { next = next * 1103515245 + 12345; return((unsigned)(next/65536) % 32768); } void mysrand(unsigned seed) { next = seed; } 지금까지 수집한 정보: - 내 시스템에서sizeof(unsigned) = 4(32비트 부..

programing 2022.08.01

GCC의 C/C++ 소스에서 어셈블러 출력을 얻는 방법은 무엇입니까?

GCC의 C/C++ 소스에서 어셈블러 출력을 얻는 방법은 무엇입니까? 어떻게 하는 거야? 컴파일 방법을 분석하려면 내보낸 어셈블리 코드를 어떻게 얻어야 합니까? 하다를 사용하세요.-Sgcc(g++)라고 합니다. gcc -S helloworld.c 그러면 프리프로세서(cpp)가 hellowolld.c 상에서 실행되고 초기 컴파일을 수행한 후 어셈블러가 실행되기 전에 중지됩니다. 로는 파일 「」이 됩니다.helloworld.s은, 을 할 수 -o★★★★★★ 。 gcc -S -o my_asm_output.s helloworld.c 물론 이것은 원본 소스가 있는 경우에만 작동합니다. 경우 대체 은 " " "를 입니다.objdump해 주세요.--disassemble 「」)-d생략형식의 경우). objdump -S..

programing 2022.08.01

C에 문자열 배열을 작성하려면 어떻게 해야 하나요?

C에 문자열 배열을 작성하려면 어떻게 해야 하나요? C에 문자열 배열을 작성하려고 합니다.이 코드를 사용하는 경우: char (*a[2])[14]; a[0]="blah"; a[1]="hmm"; gcc는 "warning: assign from compatible pointer type"을 표시합니다.올바른 방법은 무엇입니까? .printf(a[1]); '흠', '흠', '흠', '흠', '흠', '흠', '흠', '흠', '흠', '흠', '흠', '흠', '흠', '흠', '흠', '음끈을 바꾸고 싶지 않다면, 간단히 할 수 있습니다. const char *a[2]; a[0] = "blah"; a[1] = "hmm"; 두 을 두 포인트로 .const char"blah" ★★★★★★★★★★★★★★★★★」"..

programing 2022.07.31