반응형

C 103

Control+D 신호를 캡처하는 방법

Control+D 신호를 캡처하는 방법 프로그램에서 +D 신호를 캡처하여 신호 핸들러를 쓰고 싶습니다.내가 어떻게 그럴 수 있을까?저는 C에서 Linux 시스템을 사용하고 있습니다.다른 사용자가 이미 말했듯이 D+를 처리하려면 "파일 끝"을 처리합니다. Control+D는 사용자와 stdin으로 표시되는 의사 파일 간의 통신입니다.이는 구체적으로 "파일 끝"을 의미하는 것이 아니라 일반적으로 "지금까지 입력한 입력을 플러시"를 의미합니다.플러싱이란 어떤 것이든read()프로그램에서 stdin을 호출하면 마지막 플러시 이후 입력된 길이와 함께 반환됩니다.행이 비어 있지 않으면 사용자가 아직 "return"을 입력하지 않았더라도 프로그램에서 입력을 사용할 수 있습니다.행이 비어 있는 경우는,read()는 0..

programing 2022.08.27

memcpy(0,0,0)를 실행해도 안전한가?

memcpy(0,0,0)를 실행해도 안전한가? 저는 C기준에 대해 잘 모르니 조금만 참아주세요. 표준으로 보증하고 있는지 알고 싶다.memcpy(0,0,0)안전합니다. 내가 찾을 수 있는 유일한 제한은 기억 영역이 겹치면, 그 동작은 정의되지 않는다는 것이다. 하지만 메모리 영역이 여기서 겹친다고 생각해도 될까요?C 규격의 초안 버전(ISO/IEC 9899:1999)을 가지고 있습니다만, 그 콜에 대해서 재미있는 것이 몇 가지 있습니다.우선, (77.21.1/2)에 대해 언급하고 있다.memcpy그거 인수가 다음과 같이 선언된 경우size_tn은 함수의 배열 길이를 지정합니다.n은 해당 함수에 대한 호출 값 0을 지정할 수 있습니다.이 하위 절의 특정 함수에 대한 설명에서 달리 명시되지 않는 한, 그러한..

programing 2022.08.27

prefix 연산자와 postfix 연산자의 차이점은 무엇입니까?

prefix 연산자와 postfix 연산자의 차이점은 무엇입니까? 9시 정각 ★★★★★★★★★★★★★★★★★★★★★★★.return(i++)하고 "11"에 "11"이 반환됩니다.--i10달러입니다. 어떻게 작동하는지 설명해 주실 수 있나요? #include main() { int i= fun(10); printf("%d\n",--i); } int fun (int i) { return(i++); } 의 postfix 버전과 prefix 버전 사이에는 큰 차이가 있습니다.++. 버전 「」)에서는,++i입니다.i이 식의 값은 의 새로운 값입니다.i. 버전 「」)에서는,i++입니다.i증가하지만 식의 값은 의 원래 값입니다.i. 다음 코드를 한 줄씩 분석합니다. int i = 10; // (1) int j = +..

programing 2022.08.25

GDB에서 "Single-steping to exit . . that is no line number information" 이라는 메시지가 표시되는 이유는 무엇입니까?

GDB에서 "Single-steping to exit . . that is no line number information" 이라는 메시지가 표시되는 이유는 무엇입니까? 플래그를 사용하여 gcc 4.4.1을 사용하여 C 프로그램을 컴파일했습니다.-g단, gdb 버전 7.0의 기능 중 하나를 실행하려고 하면 다음과 같은 메시지가 나타납니다. "Single stepping until exit from function _DictionaryTree_getNodeList, which has no line number information." 누가 왜 이런 일이 일어나는지 말해줄래?추측일 뿐이지만 _Dictionary입니다.-g로 컴파일되지 않은 다른 파일에 Tree_getNodeList가 있습니까?저도 같은 문제..

programing 2022.08.24

C/C++의 정규 분포에 따라 난수 생성

C/C++의 정규 분포에 따라 난수 생성 C 또는 C++의 정규 분포에 따라 난수를 쉽게 생성할 수 있는 방법은 무엇입니까? Boost를 사용하고 싶지 않아요. 나는 Knuth가 이것에 대해 길게 말하는 것을 알지만, 나는 지금 그의 책을 가지고 있지 않다.일반 RNG에서 가우스 분포 번호를 생성하는 방법은 여러 가지가 있습니다. 일반적으로 Box-Muller 변환이 사용됩니다.정규 분포를 사용하여 값을 올바르게 생성합니다.수학은 쉽다.두 개의 (균일한) 난수를 생성하고 공식을 적용하면 정규 분포 난수 두 개를 얻을 수 있습니다.하나는 반환하고 다른 하나는 랜덤 번호에 대한 다음 요청을 위해 저장합니다.C++11 C++11은 제가 오늘 선택한 방법입니다. C 이전 C++ 다음은 복잡도 증가순으로 몇 가지..

programing 2022.08.24

C/C++ 소스 코드를 코딩 표준과 대조하여 검사하는 무료 툴?

C/C++ 소스 코드를 코딩 표준과 대조하여 검사하는 무료 툴? 마감되었습니다. 이 질문은 충족되지 않습니다.스택 오버플로우 가이드라인현재 답변을 받고 있지 않습니다. 이 질문을 개선하시겠습니까?스택 오버플로의 토픽이 되도록 질문을 업데이트합니다. 8년 전에 문을 닫았어요 이 질문을 개선하다 Java용 툴(Checkstyle, JCSC)은 꽤 쉽게 찾을 수 있을 것 같습니다만, C/C++용 툴은 찾을 수 없습니다.보풀과 같은 정적 코드 분석기를 찾는 것이 아니라 변수 이름 지정, 대문자화, 간격, 식별, 브래킷 배치 등의 코딩 규격과 대조하고 싶을 뿐입니다.Google 코드 스타일 가이드의 Google c++lint.내가 아는 유일한 도구는 베라야.하지만 써본 적이 없어서 얼마나 실용적인지는 말할 수 없..

programing 2022.08.24

C의 printf 함수 코드

C의 printf 함수 코드 이 질문에는 이미 답변이 있습니다. 닫힘11년 전에요. 중복 가능성: c/c++ 함수의 소스 코드 스트링을 STDOUT에 인쇄해야 한다는 것을 알기 위해 C프로그램에서 printf("Hello World!")를 쓸 때 사용되는 C코드를 어디서 찾을 수 있는지 궁금했습니다.나는 를 찾아보았다.h> 단, 그 시제품은 int printf(const char *format 등)에서만 찾을 수 있었습니다.내부적으로는 찾을 수 없었습니다.다음은 GNU 버전입니다.printf...들어가는 것을 볼 수 있다.stdout로.vfprintf: __printf (const char *format, ...) { va_list arg; int done; va_start (arg, format); d..

programing 2022.08.21

y -= m < 3은 무엇을 의미합니까?

y -= m < 3은 무엇을 의미합니까? C 코드의 예를 조사하던 중, 다음과 같은 것을 발견했습니다. y -= m < 3; 이게 뭘 하는 거지?루프나 뭐 그런 걸 위해 응축된 건가요?제가 아는 한 구글 검색은 불가능합니다.m < 3어느 쪽인가1또는0true 값에 따라 달라집니다. 그렇게y=y-1언제m=3각 조작의 우선순위에 따라 분류하면 다음과 같이 됩니다. y = (y - (m < 3)); m < 3평가되어 부울 결과를 반환합니다.1또는0표현은 다음과 같이 단순화할 수 있습니다. y = y - 1; // if m < 3 is true 또는 y = y - 0; // if m < 3 is false 이 작업을 하는 목적은 이 시스템의if절을 클릭합니다.그러니까...if (m < 3) { y -=1; },..

programing 2022.08.21

C에서 단일 문자를 스캔하는 방법

C에서 단일 문자를 스캔하는 방법 이 질문에는 이미 답변이 있습니다. scanf()는 버퍼에 줄바꿈 문자를 남깁니다. (6개의 답변) 닫힘2년 전에요. C: 사용자로부터 char를 취득하려고 합니다.scanf프로그램을 실행하면 사용자가 아무것도 입력하기를 기다리지 않습니다. 코드는 다음과 같습니다. char ch; printf("Enter one char"); scanf("%c", &ch); printf("%c\n",ch); 왜 안 되지?%c선행에 (를 들어에서) 뉴라인이, "" (": "Newline")는 "Newline"을 사용합니다.scanf콜이 즉시 소비됩니다. 이 문제를 회피하는 방법 중 하나는 변환 지정자 앞에 공백을 넣는 것입니다. scanf(" %c", &c); 형식 문자열의 공백은 다음을..

programing 2022.08.21

C 라이브러리에 '스로우'가 표시되는 이유는 무엇입니까?

C 라이브러리에 '스로우'가 표시되는 이유는 무엇입니까? 할 때:less /usr/include/stdio.h(이것은 C 라이브러리일 뿐 C++와는 관계가 없습니다) 알겠습니다.__THROW몇 가지 함수 선언 후.또한, 몇 가지 기능 위에 있는 코멘트는 '이 기능은 가능한 취소 포인트이므로 다음과 같이 표시되지 않습니다.__THROW'이게 다 뭘 위한 거지? ' throw예외 처리를 위한 것입니다.제가 알기로는 C는 지원을 하지 않는 것으로 알고 있습니다. 설명해 주세요.이 헤더는 해당 벤더의 C 컴파일러와 C++ 컴파일러 간에 공유됩니다.뭘 보셨어요?__THROW정의되는 것은? 다음과 같은 것이 의심됩니다. #ifdef __cplusplus #define __THROW throw() #else #def..

programing 2022.08.21
반응형