programing

C-String을 비우는 적절한 방법

prostudy 2022. 5. 3. 20:55
반응형

C-String을 비우는 적절한 방법

나는 C에서 현악기를 많이 다루어야 하는 프로젝트를 하고 있어.보통은 C++로 프로그램을 하기 때문에 단순히 string.empty()라고 말하는 것과는 조금 다르다.

C에 있는 끈을 비우는 적절한 방법이 궁금하다.이거면 되겠니?

buffer[80] = "Hello World!\n";
// ...
strcpy(직렬, "");

'빈다'는 말이 무슨 뜻인지에 따라 달라진다.만약 당신이 제로 길이 문자열만을 원한다면, 당신의 예는 효과가 있을 것이다.

또한 다음과 같은 방법으로도 작동한다.

buffer[0] = '\0';

문자열의 전체 내용을 0으로 설정하려면 다음과 같이 하십시오.

memset(buffer,0,strlen(buffer));

하지만 이것은 첫 번째 NULL 문자까지의 영점 설정에만 효과가 있을 것이다.

문자열이 정적 배열인 경우 다음을 사용할 수 있다.

memset(buffer,0,sizeof(buffer));

초보자지만...내가 아는 바로는, 가장 좋은 방법은

strncpy(dest_string,"",strlen(dest_string));

두 가지 다른 방법은strcpy(str, "");그리고string[0] = 0

Variable 내용을 실제로 삭제하려면(위 :P )와 같은 루프를 사용하십시오.

#include <string.h>

...

int i=0;
for(i=0;i<strlen(string);i++)
{
    string[i] = 0;
}

처음부터 동적 할당된 문자 배열을 지우려면 malloc()와 memset() 또는 -의 조합을 사용할 수 있으며, 이것은 malloc와 같은 작업을 하지만 Null로 전체 배열을 초기화하는 훨씬 빠른 속도 - calloc()이다.

마침내 나는 네가 너의 런타임을 명심하길 바란다.더 나아가, 만약 당신이 거대한 배열 (6자리 이상)을 처리하고 있다면, 당신은 전체 문자열을 통해 memset()를 실행하는 대신에 첫 번째 값을 Null로 설정하도록 노력해야 한다.

처음에는 더러워 보일지 모르지만, 훨씬 더 빠르다.코드에 더 신경을 쓰면 된다;)

나는 이것이 누구에게나 유용했기를 바란다;)

만약 당신이 문자열을 받는 어떤 것에 대한 수신 버퍼를 지우려고 한다면 내가 찾은 가장 좋은 방법은 위에서 설명한 대로 memset을 사용하는 것이다.그 이유는 다음 수신된 문자열의 크기가 아무리 크더라도(물론 버퍼의 크기에 한함) 미리 영점 처리된 버퍼에 기록하면 자동으로 아스키즈 문자열이 되기 때문이다.

문자열 이름 및 문자열 길이는 다른 방법이 처음 접하는 0에서 중지할 수 있는 모든 문자를 0으로 설정함

    void strClear(char p[],u8 len){u8 i=0; 
        if(len){while(i<len){p[i]=0;i++;}}
    }

비운다는 것이 무슨 뜻인지에 따라 달라진다.빈 문자열만 원하신다면, 할 수 있다.

buffer[0] = 0;

모든 요소를 0으로 설정하려면

memset(buffer, 0, 80);

참조URL: https://stackoverflow.com/questions/8107826/proper-way-to-empty-a-c-string

반응형