반응형

C 11

유연한 배열 부재로 구조를 초기화하는 방법

유연한 배열 부재로 구조를 초기화하는 방법 나는 다음과 같은 구조를 가지고 있습니다. typedef struct _person { int age; char sex; char name[]; }person; 를 사용하지 않고 인스턴스를 만들고 유연한 배열 멤버로 구조를 초기화하는 방법에 대해 몇 가지 기본적인 인터넷 검색을 했지만 실패했습니다.malloc(). 예를 들어 다음과 같은 일반 구조의 경우 struct a { int age; int sex; }; 우리는 예를 만들 수 있습니다.struct a이렇게 초기화를 합니다. struct a p1 = {10, 'm'}; 그러나 유연한 배열이 포함된 구조물의 경우(예:_person위에서 언급한 바와 같이) 인스턴스를 생성하고 일반적으로 수행하는 방법과 같이 초..

programing 2023.09.13

컴파일 오류: 프로그램의 stray '\302' 등

컴파일 오류: 프로그램의 stray '\302' 등 다음 공격 코드를 컴파일하는 데 문제가 있습니다. http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c "gcc file.c"와 "gcc-O2 file.c"를 사용하고 있지만, 두 가지 모두 다음과 같은 오류가 발생합니다. sorbolinux-exec.c: In function ‘sc’: sorbolinux-exec.c:76: error: stray ‘\302’ in program sorbolinux-exec.c:76: error: stray ‘\244’ in program sorbolinux-exec.c:76: error: ‘t’ undeclared (first use in thi..

programing 2023.09.13

C++ 문자열에서 상수가 아닌 C 문자열을 다시 받을 수 있습니까?

C++ 문자열에서 상수가 아닌 C 문자열을 다시 받을 수 있습니까? C++의 항상 정확성은 여전히 저에게 두통을 줍니다.오래된 C 코드를 사용하는 동안, 저는 C++ 문자열 객체를 C 문자열로 변환하고 변수에 할당해야 하는 저 자신을 발견했습니다.그나변다같습니다과음는수러입니다.char *그리고.c_str()를 반환합니다.const char []제 기능을 사용하지 않고도 이 문제를 해결할 수 있는 좋은 방법이 있습니까? 편집: 저도 새로 전화하는 것을 피하려고 합니다.메모리 누수를 줄이기 위해 조금 더 복잡한 코드를 기꺼이 교환하겠습니다.C++17 이상: foo(s.data(), s.size()); C++11, C++14: foo(&s[0], s.size()); 그러나 주의해야 할 사항은 다음과 같습니다...

programing 2023.08.29

C에서 '0'을 빼면 문자가 나타내는 숫자가 되는 이유는 무엇입니까?

C에서 '0'을 빼면 문자가 나타내는 숫자가 되는 이유는 무엇입니까? 누가 이것이 왜 효과가 있는지 설명해 줄 수 있습니까? char c = '9'; int x = (int)(c - '0'); 문자의 아스키 코드에서 '0'을 빼면 해당 문자가 나타내는 숫자가 되는 이유는 무엇입니까?왜냐하면 문자는 모두 숫자로 표시되고 '0'이 그들 중 첫 번째이기 때문입니다. 아래 표에서 다음을 확인할 수 있습니다. '0' => 48 '1' => 49 '9' => 57. 결과적으로: ('9'-'0') = (57 − 48) = 9 출처: http://www.asciitable.comchar정수 유형입니다. 마찬가지입니다.int그리고 가족.유형의 객체char숫자 값이 있습니다.문자 리터럴에 입력하는 문자 간의 매핑(예:'0..

programing 2023.08.04

이것은 무엇을 의미합니까?:*(int32 *) 0 = 0;

이것은 무엇을 의미합니까?:*(int32 *) 0 = 0; 에서 다음코서에, 무이엇은 입니까?*(int32 *) 0 = 0;비열한? void function (void) { ... for (;;) *(int32 *) 0 = 0; /* What does this line do? */ } 몇 가지 참고 사항: 특정 코드 앞에 종료 문이 있기 때문에 코드에 연결할 수 없는 것 같습니다. int32이라typedef하지만 당신은 그것에 너무 신경 쓰지 말아야 합니다. 이 코드는 컴파일러의 언어 런타임에서 가져온 것으로, 관심 있는 사람이라면 누구나 사용할 수 있습니다. 코드는 다음을 수행합니다. for (;;) // while(true) *(int32 *) 0 = 0; // Treat 0 as an address..

programing 2023.08.04

C에서 문자열 반전

C에서 문자열 반전 저는 역 문자열 프로그램을 개발했습니다.더 나은 방법이 있는지, 그리고 제 코드에 잠재적인 문제가 있는지 궁금합니다.저는 C의 몇 가지 고급 기능을 연습하려고 합니다. char* reverse_string(char *str) { char temp; size_t len = strlen(str) - 1; size_t i; size_t k = len; for(i = 0; i < len; i++) { temp = str[k]; str[k] = str[i]; str[i] = temp; k--; /* As 2 characters are changing place for each cycle of the loop only traverse half the array of characters */ if..

programing 2023.07.25

C에서 가장 높은 순서 비트 찾기

C에서 가장 높은 순서 비트 찾기 이 질문에는 이미 다음과 같은 답이 있습니다. C에서 정수에서 가장 높은 설정 비트(msb)를 찾는 가장 빠르고 효율적인 방법은 무엇입니까? (32개 답변) 마감됨2년 전에. 제가 원하는 것은 제가 숫자를 입력할 수 있는 것이고 그것은 가장 높은 주문 비트를 반환할 것입니다.저는 간단한 방법이 있다고 확신합니다.다음은 출력 예입니다(왼쪽이 입력). 1 -> 12 -> 23 -> 24 -> 45 -> 46 -> 47 -> 48 -> 89 -> 8... 63 -> 32해커의 기쁨에서: int hibit(unsigned int n) { n |= (n >> 1); n |= (n >> 2); n |= (n >> 4); n |= (n >> 8); n |= (n >> 16); ret..

programing 2023.07.20

엔디언은 바이트의 비트 순서를 나타낼 수 있습니까?

엔디언은 바이트의 비트 순서를 나타낼 수 있습니까? Chris Adamson의 "Learning Core Audio: A Hands-On Guide to Audio Programming for Mac and iOS"를 읽고 있는데, 어느 시점에서 저자는 빅 엔디언을 다음과 같이 설명합니다. 바이트나 단어의 높은 비트는 낮은 비트보다 수치적으로 더 중요합니다. 하지만 지금까지 빅리틀 엔디안의 문제는 바이트 순서에만 적용되고 비트 순서에는 적용되지 않는다고 생각했습니다.작은 엔디언 시스템이든 큰 엔디언 시스템이든 상관없이 한 바이트의 비트 순서(왼쪽에서 오른쪽)는 동일합니다.내가 틀렸나요?저자가 틀린가요?아니면 제가 그의 요점을 잘못 이해했나요?일반적으로 바이트 내의 비트를 개별적으로 처리할 수 없기 때문에..

programing 2023.07.15

이 3차 조건부입니까?: 올바른(목표) C 구문입니까?

이 3차 조건부입니까?: 올바른(목표) C 구문입니까? 저는 이것이 가능하다고 생각하지 않았지만 분명히 목표 C에서는 허용됩니다. int a = b ?: c; 여기서 그들이 하는 일을 보면, 그들은 삼원식의 두 번째 부분을 생략하고 있습니다. 만약 b가 0이 아니라면, b는 두 번째 부분으로 사용됩니다. 영리하지만 제가 알기로는 이것은 K&RC와 ANSIC에 반하는 것입니다. 그렇지 않다면, 저는 몇 년 동안 아주 교묘한 구문 트릭에서 빠져 있었습니다... 아아! 업데이트 : gcc입니다.출처: http://en.wikipedia.org/wiki/%3F%3A C로의 GNU 확장은 두 번째 피연산자를 생략할 수 있으며, 암시적으로 첫 번째 피연산자를 두 번째 피연산자로 사용할 수도 있습니다. a = x ?..

programing 2023.07.10

이클립스/CDT로 사용자 지정 파일 만들기 사용

이클립스/CDT로 사용자 지정 파일 만들기 사용 이 질문에는 이미 다음과 같은 답이 있습니다. 이클립스에서 외부 메이크 파일을 사용하는 방법 (3개 답변) 마감됨5년 전에. 나는 여러 개의 프로젝트가 있습니다..c그리고..h파일들과 나는 나만의 메이크 파일을 작성합니다. 원래 위치에서 메이크 파일과 원본 파일을 사용하도록 Eclipse를 구성하려면 어떻게 해야 합니까?사용자 정의 Makefile을 생성하여 프로젝트 루트에 있는지 확인할 수 있습니다.그런 다음 자동 생성 메이크 파일을 비활성화해야 합니다.여기로 이동하면 이를 수행할 수 있습니다. Project Properties (right click on project and select properties) -> C/C++ Build -> in tha..

programing 2023.06.15
반응형