문자 배열이 비어 있는지 확인하는 가장 좋은 방법
문자 배열이 비어 있는지 확인하는 가장 신뢰할 수 있는 방법은?
char text[50];
if(strlen(text) == 0) {}
또는
if(text[0] == '\0') {}
아니면 내가 해야 할 필요가 있는가?
memset(text, 0, sizeof(text));
if(strlen(text) == 0) {}
이 문제를 해결하는 가장 효율적인 방법은 무엇인가?
다음 코드 지정:
char text[50];
if(strlen(text) == 0) {}
이어서 이 코드에 대한 질문:
memset(text, 0, sizeof(text));
if(strlen(text) == 0) {}
혼탁한 냄새가 난다.특히, 이 경우:
char text[50];
if(strlen(text) == 0) {}
…의 내용text[]
초기화되지 않고 정의되지 않을 것이다.그러므로,strlen(text)
정의되지 않은 결과를 반환할 것이다.
C 문자열이 빈 문자열로 초기화되도록 하는 가장 쉽고 빠른 방법은 첫 번째 바이트를 0으로 설정하는 것이다.
char text[50];
text[0] = 0;
그때부터 둘 다strlen(text)
그리고 매우 빠르지만 아직 그렇지 않은 것.(text[0] == 0)
테스트 둘 다 빈 문자열을 탐지할 것이다.
어레이에 null-terminated 문자열이 있는지 여부에 따라 다름.만약 그렇다면,
if(text[0] == '\0') {}
충분할 거야
편집: 다른 방법은...
if (strcmp(text, "") == 0)
잠재적으로 효율성은 떨어지지만 당신의 의도를 분명하게 표현하는 겁니다.
이것은 문자 배열이 비어 있는지 여부를 찾는 데 효과적일 것이다.그것은 아마도 가장 빠를 것이다.
if(text[0] == '\0') {}
이것 또한 만약 그 일이 일어난다면 빠를 것이다.text
배열이 비어 있다.만약 그것이 문자를 포함하고 있다면, 먼저 그것의 모든 문자를 세어야 한다.
if(strlen(text) == 0) {}
두 번째 방법은 한 번의 읽기 및 한 번의 비교를 수반하기 때문에 거의 확실히 null-terminated 문자열이 비어 있는지 여부를 테스트하는 가장 빠른 방법이 될 것이다.이 경우에는 확실히 이 접근법에 아무런 문제가 없으니, 그것을 이용하는 편이 좋다.
세 번째 방법은 문자 배열이 비어 있는지 여부를 확인하지 않고 문자 배열이 비어 있는지 확인한다.
두 번째 것이 가장 빠르다.사용.strlen
끈이 정말 비어있으면 가까우겠지만strlen
문자열의 모든 문자를 통해 항상 반복되므로 비어 있지 않으면 필요한 것보다 훨씬 많은 작업을 수행할 수 있다.
제임스가 언급했듯이 세 번째 옵션은 확인 전에 문자열을 지우기 때문에 체크는 항상 성공하지만 의미가 없을 것이다.
if (text[0] == '\0')
{
/* Code... */
}
플래시 및/또는 RAM에 공간이 거의 없는 마이크로 컨트롤러에 대해 코딩하는 경우 이 옵션을 사용하십시오.플래시를 사용하여 더 많은 플래시를 낭비할 수 있음strlen
첫 번째 바이트를 확인하는 것보다.
위의 예는 가장 빠르고 계산이 덜 필요하다는 것이다.
if (!*text) {}
위에서는 포인터 '텍스트'를 참조하지 않고 0인지 확인한다. 또는:
if (*text == 0) {}
참조URL: https://stackoverflow.com/questions/1793867/best-way-to-check-if-a-character-array-is-empty
'programing' 카테고리의 다른 글
실제로 스택 오버플로 오류를 일으키는 요소는? (0) | 2022.04.24 |
---|---|
Excel 셀의 숫자 문자열을 숫자가 아닌 문자열로 읽으려면 어떻게 해야 하는가? (0) | 2022.04.24 |
vue 관련 문제 다시 한 번 발생: vue를 2.5에서 2.6.8로 업데이트하고 [Vue warn]:구성 요소를 마운트하지 못함: 템플릿 또는 렌더 함수가 정의되지 않음 (0) | 2022.04.24 |
JSON의 끈을 어떻게 벗어나야 할까? (0) | 2022.04.23 |
Vue.js 계산 함수에서 다중 차원 배열 필터링 (0) | 2022.04.23 |