반응형

C 251

printf를 사용하여 Null이 아닌 문자열을 인쇄하려면 어떻게 해야 하는가?

printf를 사용하여 Null이 아닌 문자열을 인쇄하려면 어떻게 해야 하는가? 런타임에 문자열 길이를 안다고 가정하여 printf를 사용하여 Null이 아닌 문자열을 인쇄하려면 어떻게 해야 하는가?printf("%.*s", length, string); 다른 아그와 함께 사용: printf("integer=%d, string=%.*s, number=%f", integer, length, string, number); // ^^^^ ^^^^^^^^^^^^^^ C에서 를 사용하여 출력할 최대 길이를 지정할 수 있다.%.123s형식을 갖추다이것은 출력 길이가 최대 123자임을 의미한다.그123으로 대체될 수 있다.*, 그래서 그 길이를 하드 디스크 대신에 printf의 논쟁에서 뺐다. 이는 다음과 같은 경우..

programing 2022.05.26

C에서 함수 호출 재정의

C에서 함수 호출 재정의 통화 기록을 위해 특정 기능 호출을 여러 API로 무효화하고 싶지만, 실제 기능으로 전송되기 전에 데이터를 조작하고 싶을 수도 있다. 예를 들어, 내가 "라는 함수를 사용한다고 하자.getObjectName는 가끔 이 기능의 행동을 다른 결과를 바꾸고 싶어서 이 기능을 로 하고 싶다다른 결과를 보기 위해 이 기능의 동작을 변경하고 싶기 때문에 일시적으로 이 기능을 재정의하고 싶다. 다음과 같은 새 원본 파일을 생성한다. #include const char *getObjectName (object *anObject) { if (anObject == NULL) return "(null)"; else return "name should be here"; } 나는 평소처럼 나의 다른 모..

programing 2022.05.26

Flex/lex의 문자열 리터럴에 대한 정규식

Flex/lex의 문자열 리터럴에 대한 정규식 나는 유연함을 배우기 위해 실험을 하고 있는데 문자열 리터럴을 매칭하고 싶다.현재 내 코드는 다음과 같다. "\""([^\n\"\\]*(\\[.\n])*)*"\"" {/*matches string-literal*/;} 나는 한 시간 가량 변주곡에 시달려 왔는데 제대로 작동하지 않는다.나는 본질적으로 (탈출되지 않는 한) 새로운 행을 포함할 수 없고 탈출한 문자를 지원하는 문자열 리터럴과 일치하기를 바라고 있다. 나는 아마도 그저 빈약한 정규 표현이나 유연한 표현과 양립할 수 없는 표현을 쓰고 있을 것이다.충고해 주십시요!문자열은 따옴표로 구성된다. " 0 또는 그 이상의 탈출이 뒤따른다. \\. 또는 비백슬래시 문자 [^"\\] 그리고 마침내 끝맺는 인용구 ..

programing 2022.05.26

C의 크기가 "int"가 2바이트인가 4바이트인가?

C의 크기가 "int"가 2바이트인가 4바이트인가? C의 정수 변수가 2바이트 또는 4바이트를 차지하는가?그것이 의존하는 요인은 무엇인가? 대부분의 교과서는 정수 변수가 2바이트를 차지한다고 한다.그러나 내가 프로그램을 실행하면 정수 배열의 연속적인 주소를 4의 차이를 보여준다.와 동등하다는 것은 알고 있다.sizeof(int) .의 크기의 int컴파일러에 의존하고 있어과거, 프로세서가 16비트였던 시절,int. 요즘에는 32비트 시스템뿐 아니라 64비트 시스템에서도 4바이트가 가장 많다. 여전히, 사용sizeof(int)프로그램이 실행되는 특정 시스템의 정수 크기를 얻는 가장 좋은 방법이다. 편집: 잘못된 문 수정:int대부분의 64비트 시스템에서 8바이트.예를 들어 64비트 GCC의 경우 4바이트다...

programing 2022.05.26

X타입에프(struct X typedef) vs.X형 구조체?

X타입에프(struct X typedef) vs.X형 구조체? 기존 코드 베이스에는 다음과 같은 (작동) 코드가 있으며, MSVC(2010)와 Windows DDK에서 컴파일된 C와 C++ 사이에 공유되는 포함 파일에 사용된다. struct X { USHORT x; } typedef X, *PX; 그리고: enum MY_ENUM { enum_item_1, enum_item_2 } typedef MY_ENUM; 내가 알기로는 정확한 정의는 다음과 같이 보여야 한다. typedef struct { USHORT x; } X, *PX; 아래 양식을 가지고 있는 목적이 있는가?내가 뭘 빼놓았나요?둘 다라는 사실은typedef , 그리고 typedef 타당하다는 것은 단순히 언어 문법 정의에서 나온 것이다. typ..

programing 2022.05.25

역 엔지니어링으로부터 실행 파일을 보호하시겠습니까?

역 엔지니어링으로부터 실행 파일을 보호하시겠습니까? C/C++ 코드를 분해 및 역엔지니어링으로부터 보호하는 방법을 고민해 보았다.보통 나는 이런 행동을 내 코드로 용납하지 않을 것이다. 그러나 내가 작업해 온 현재의 의전은 다양한 사람들의 안전을 위해 결코 검사되거나 이해되어서는 안 된다. 이제 이것은 나에게 새로운 주제인데, 인터넷은 역공학에 대한 예방에 도움이 되는 것이 아니라 역공학에 대한 수많은 정보를 보여준다. 지금까지 생각해 본 것 중 몇 가지는 다음과 같다. 코드 주입(실제 기능 호출 전후에 더미 호출 기능) 코드 난독화(이진 분해를 망치) 나만의 시작 루틴 쓰기(디버거가 바인딩할 수 있는 하드 드라이브) void startup(); int _start() { startup( ); exit ..

programing 2022.05.24

제로 사이즈 말로크

제로 사이즈 말로크 이 질문에는 이미 다음과 같은 해답이 있다. 말로크(0)가 무슨 소용이야? (17개 답변) 닫힌7년 전. 매우 간단한 질문으로, 나는 다음과 같은 프로그램을 만들었다. #include int main(int argc, char ** argv) { void * ptr; ptr = malloc(0); free(ptr); } 그리고 그것은 내 기계에 결함이 없다.그것은 stdlib malloc과 무료의 휴대용 행동인가? 아니면 내가 문제를 찾고 있는가? 편집 : 휴대성이 없어 보이는 것은 말로크가 반환한 값이다.문제는 ptr의 값이 아니라 malloc(0)+자유 조합에 관한 것이다.동작은 구현이 정의되어 있으며, NULL 포인터 또는 주소를 받게 된다.그러나 다음과 같은 이유로 수신된 포인..

programing 2022.05.24

전에 경시하라, 아니면 그 후에 경시하라.

전에 경시하라, 아니면 그 후에 경시하라. 시작은 아마 알고 있을 겁니다.const개체의 데이터 또는 포인터를 수정할 수 없거나 둘 다로 만드는 데 사용할 수 있다. const Object* obj; // can't change data Object* const obj; // can't change pointer const Object* const obj; // can't change data or pointer 그러나 다음 구문도 사용할 수 있다. Object const *obj; // same as const Object* obj; 중요한 것은 별표를 어느 쪽에 붙이는가 하는 것뿐이다.const키워드개인적으로 나는 말하는 것을 선호한다.const왼쪽의 데이터를 특정하기 위해 좌우의 사고방식에서 더 잘..

programing 2022.05.23

uint64_t 인쇄 방법?오류: "허위 후행 '%' 형식"

uint64_t 인쇄 방법?오류: "허위 후행 '%' 형식" printf uint64_t의 매우 간단한 테스트 코드를 작성했다. #include #include int main() { uint64_t ui64 = 90; printf("test uint64_t : %" PRIu64 "\n", ui64); return 0; } 나는 그것을 컴파일하기 위해 ubuntu 11.10 (64 비트)과 gcc 버전 4.6.1을 사용하지만, 실패하였다. main.cpp: In function ‘int main()’: main.cpp:9:30: error: expected ‘)’ before ‘PRIu64’ main.cpp:9:47: warning: spurious trailing ‘%’ in format [-Wform..

programing 2022.05.23

C99에서 유니온을 통한 형식연결이 불특정화 되어 있으며, C11에 명시되어 있는가?

C99에서 유니온을 통한 형식연결이 불특정화 되어 있으며, C11에 명시되어 있는가? 스택 오버플로 질문에 대한 여러 가지 대답 플로트의 IEEE 단일 정밀 비트를 얻으려면 다음 항목을 사용하십시오.union 구조(예: a의 비트를 돌리는 구조)float.uint32_t): union { float f; uint32_t u; } un; un.f = your_float; uint32_t target = un.u; 그 , 그 때의 가치.uint32_t조합원은 C99 표준(최소한 초안 n1124)에 따라 불특정인 것으로 보이며, 여기서 섹션 6.2.6.1.7은 다음과 같이 명시되어 있다. 값이 유니언 유형의 개체의 멤버에 저장될 때, 해당 멤버에 해당하지는 않지만 다른 멤버에 해당하는 개체 표현 바이트는 지정..

programing 2022.05.23
반응형