«c» 태그된 질문

C는 시스템 프로그래밍 (OS 및 임베디드), 라이브러리, 게임 및 크로스 플랫폼에 사용되는 범용 프로그래밍 언어입니다. 이 태그는 달리 지정하지 않는 한 ISO 9899 표준 (최신 버전, 9899 : 2018, C89, c99, c11 등으로 버전 별 요청에 태그 지정)에 정의 된대로 C 언어와 관련된 일반적인 질문과 함께 사용해야합니다. C는 C ++과 구별되며 합리적인 이유없이 C ++ 태그와 결합해서는 안됩니다.

15
strtok ()는 C에서 문자열을 토큰으로 어떻게 분할합니까?
strtok()기능 작동에 대해 설명해주십시오 . 매뉴얼은 문자열을 토큰으로 나눕니다. 나는 그것이 실제로하는 일을 매뉴얼에서 이해할 수 없다. 에 나는 시계를 추가 str하고 *pch첫 While 루프가 발생했을 때의 작동을 확인의 내용은 str단지 "이"을했다. 아래에 표시된 출력이 화면에 어떻게 인쇄 되었습니까? /* strtok example */ #include <stdio.h> #include <string.h> int main () …
114 c  string  split  token  strtok 


4
공백이있는 왼쪽 패드 printf
printf를 사용할 때 왼쪽에 공백으로 문자열을 어떻게 채울 수 있습니까? 예를 들어 앞에 40 개의 공백이있는 "Hello"를 인쇄하고 싶습니다. 또한 인쇄하려는 문자열은 여러 줄로 구성됩니다. 각 줄을 별도로 인쇄해야합니까? 편집 : 명확하게 말하면 모든 줄 앞에 정확히 40 개의 공백이 인쇄되기를 원합니다.
114 c  formatting  printf 


5
GDB 손상된 스택 프레임-디버그하는 방법?
다음 스택 추적이 있습니다. 디버깅을 위해 이것에서 유용한 것을 알아낼 수 있습니까? Program received signal SIGSEGV, Segmentation fault. 0x00000002 in ?? () (gdb) bt #0 0x00000002 in ?? () #1 0x00000001 in ?? () #2 0xbffff284 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) (gdb) …
113 c  recursion  gdb 

7
C99 stdint.h 헤더 및 MS Visual Studio
놀랍게도 MS Visual Studio 2003 이상에서 C99 stdint.h가 누락되었음을 방금 발견했습니다. 이유가 있다고 확신하지만 어디서 사본을 다운로드 할 수 있는지 아는 사람이 있습니까? 이 헤더가 없으면 uint32_t 등과 같은 유용한 유형에 대한 정의가 없습니다.
113 c++  c  visual-studio  c99 

9
'int main;' 유효한 C / C ++ 프로그램?
내 컴파일러가 그렇게 생각하지 않는 것 같아서 묻습니다. echo 'int main;' | cc -x c - -Wall echo 'int main;' | c++ -x c++ - -Wall Clang은 이에 대해 경고 또는 오류를 발행하지 않으며 gcc는 단순한 경고 만 발행 'main' is usually a function [-Wmain]하지만 C로 컴파일 된 경우에만 발행합니다 …
113 c++  c  function  main  entry-point 

7
vmalloc과 kmalloc의 차이점은 무엇입니까?
나는 주변을 훑어 본 결과 kmalloc, 연속적인 물리적 메모리 블록을 확보 할 수 있으므로. 그러나 원하는 kmalloc연속 물리적 블록을 찾을 수없는 경우 에도 실패 할 수있는 것처럼 보입니다 . 연속적인 메모리 블록을 사용하면 어떤 이점이 있습니까? 특히, 시스템 호출 에서 연속적인 물리적 메모리 블록 이 필요한 이유는 무엇입니까? 그냥 사용할 …


10
ptr이 NULL 인 free (ptr)는 메모리를 손상 시킵니까?
이론적으로 나는 말할 수 있습니다 free(ptr); free(ptr); 이미 해제 된 메모리를 해제하기 때문에 메모리 손상입니다. 하지만 만약 free(ptr); ptr=NULL; free(ptr); OS가 정의되지 않은 방식으로 동작하기 때문에 무슨 일이 일어나고 있는지에 대한 실제 이론적 분석을 얻을 수 없습니다. 내가 무엇을하든,이 메모리 손상이 아닌가? NULL 포인터를 해제하는 것이 유효합니까?

9
사용하지 않는 반환 값을 무효화하는 이유는 무엇입니까?
int fn(); void whatever() { (void) fn(); } 사용하지 않은 반품 가치를 무효화 할 이유가 있습니까, 아니면 완전한 시간 낭비라고 생각하는 것이 맞습니까? 후속 조치 : 꽤 포괄적 인 것 같습니다. 자체 문서화 코드가 주석보다 낫기 때문에 사용하지 않는 반환 값을 주석 처리하는 것보다 낫다고 생각합니다. 개인적으로 불필요한 소음 이니까이 …
112 c++  c  void 

3
이 코드가 64 비트 아키텍처에서는 segfault이지만 32 비트에서는 잘 작동하는 이유는 무엇입니까?
다음 C 퍼즐을 발견했습니다. Q : 다음 프로그램이 IA-64에서는 segfault를 실행하지만 IA-32에서는 제대로 작동하는 이유는 무엇입니까? int main() { int* p; p = (int*)malloc(sizeof(int)); *p = 10; return 0; } int64 비트 컴퓨터에서의 크기가 포인터의 크기와 같지 않을 수 있다는 것을 알고 int있습니다 (32 비트가 될 수 있고 포인터가 64 …

19
#ifdef vs #if-특정 코드 섹션의 컴파일을 활성화 / 비활성화하는 방법으로 더 나은 / 안전한 방법은 무엇입니까?
이것은 스타일의 문제 일 수 있지만, 개발 팀에 약간의 차이가있어서 다른 사람이이 문제에 대해 아이디어가 있는지 궁금했습니다 ... 기본적으로 정상적인 개발 중에 꺼지는 디버그 인쇄 문이 있습니다. 개인적으로 다음을 선호합니다. //---- SomeSourceFile.cpp ---- #define DEBUG_ENABLED (0) ... SomeFunction() { int someVariable = 5; #if(DEBUG_ENABLED) printf("Debugging: someVariable == %d", someVariable); #endif …

5
Linux에서 PATH_MAX는 어디에 정의되어 있습니까?
#includePATH_MAX를 문자열 크기 조정을위한 정수로 사용하려면 어떤 헤더 파일을 호출해야 합니까? 다음을 선언 할 수 있기를 원합니다. char *current_path[PATH_MAX]; 하지만 그렇게하면 내 컴파일러 (Linux의 Clang / LLVM)에서 다음 오류가 발생합니다. recursive_find6.c:29:20: error: use of undeclared identifier 'PATH_MAX' char *current_path[PATH_MAX]; ^ Google 검색을 시도했지만 여전히 운이 없습니다. #include <limits.h> 문제 / …
112 c  linux  gcc  include  clang 


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.