[c] char 배열을 비우는 방법?

char members [255]와 같은 문자 배열이 있습니다. 루프를 사용하지 않고 어떻게 완전히 비울 수 있습니까?

“비어 있음”이란 일부 값이 저장되어 있으면 안된다는 의미입니다. 예를 들어 strcat을 수행하면 이전 값이 유지되지 않아야합니다.



답변

사용

일반적으로

배열이 범위 내에있는 경우 또는

포인터 값만 있고 nMembers는 배열의 요소 수입니다.


편집 물론 이제 요구 사항은 배열을 지우는 일반적인 작업에서 순전히 문자열을 재설정하는 것으로 변경되었으며 memset과도하고 첫 번째 요소를 0으로 설정하면 충분합니다 (다른 답변에서 언급했듯이).


편집 memset 을 사용하려면 string.h포함 해야합니다 .


답변

‘비어 있음’이 의미하는 바에 따라 다릅니다.


답변

문자열을 다루는 경우 char 배열을 0으로 만들려고하지 마십시오. 다음은 char 문자열로 작업하는 간단한 방법입니다.

복사 (새 문자열 할당) :

연결 (문자열 추가) :

빈 문자열 :

그렇게 간단합니다.


답변

문자 멤버 [255] = {0};


답변

편집 : 질문에 대한 가장 최근 편집을 감안할 때 null 종료가 없으므로 더 이상 작동하지 않습니다. 배열을 인쇄하려고하면 문자 뒤에 사람이 읽을 수없는 문자가 여러 개 표시됩니다. 그러나 나는이 답변을 후손을위한 커뮤니티 위키로 남겨두고 있습니다.

작동합니다. C 프로그래밍 언어에 따르면 :

배열의 크기가 고정 된 경우 이니셜 라이저의 수는 배열의 구성원 수를 초과 할 수 없습니다. 더 적 으면 나머지 멤버는 0으로 초기화됩니다.

이것은 배열의 모든 요소가 0의 값을 갖는다는 것을 의미합니다. 0이 유효한 값이기 때문에 이것이 “비어있다”고 생각하는지 아닌지 확실하지 않습니다 char.


답변

배열은 비울 수 없으며 항상 동일한 양의 데이터를 포함합니다.

더 큰 맥락에서 배열의 데이터는 빈 항목 목록을 나타낼 수 있지만 배열에 추가하여 정의해야합니다. 이를 수행하는 가장 일반적인 방법은 유효한 항목의 개수를 유지하거나 (pmg의 답변 참조) 문자열이 0 문자로 종료되도록하는 것입니다 (Felix의 답변). 더 복잡한 방법도 있습니다. 예를 들어 링 버퍼는 데이터가 추가되고 제거되는 위치에 대해 두 개의 인덱스를 사용합니다.


답변

귀하의 요구 사항을 고려할 때 충분합니다.

그러나 이것이 버퍼를 “비우는”것은 아닙니다. 메모리는 여전히 할당되고 유효한 문자 값이 여전히 존재할 수 있습니다.