C의 문자열을 빈 문자열로 초기화
C의 문자열을 빈 문자열로 초기화하고 싶습니다.노력했습니다.
string[0] = "";
근데 써있더라고요.
"warning: assignment makes integer from pointer without a cast"
그럼 어떻게 하면 될까요?
Will Dean 버전 외에도 전체 버퍼 초기화에 대해 다음이 일반적입니다.
char s[10] = {'\0'};
아니면
char s[10];
memset(s, '\0', sizeof(s));
아니면
char s[10];
strncpy(s, "", sizeof(s));
문자열의 첫 번째 문자를 0으로 설정하려면 다음과 같이 하십시오.
char myString[10];
myString[0] = '\0';
(또는myString[0] = 0;
)
또는, 실제로 초기화 시 다음과 같은 작업을 수행할 수 있습니다.
char myString[10] = "";
그러나 문자열이 정의되면 일반적인 길이를 0으로 설정하는 방법은 아닙니다.
'string'이라는 배열이 이미 있다고 가정하고 시도해 보십시오.
string[0] = '\0';
\0
는 문자열의 끝을 표시하는 데 필요한 명시적 NUL 터미네이터입니다.
문자열 리터럴을 문자 배열에 할당하는 것은 선언 중에만 허용됩니다.
char string[] = "";
문자열을 크기 1의 문자 배열로 선언하고 다음과 같이 초기화합니다.\0
.
이것도 시도해 보십시오.
char str1[] = "";
char str2[5] = "";
printf("%d, %d\n", sizeof(str1), sizeof(str2)); //prints 1, 5
calloc
요청된 메모리를 할당하고 해당 메모리에 포인터를 반환합니다.또한 할당된 메모리를 0으로 설정합니다.
만약 당신이 당신의 컴퓨터를 사용할 계획인 경우.string
항상 빈 문자열로:
char *string = NULL;
string = (char*)calloc(1, sizeof(char));
어떤 가치를 저장할 계획인 경우string
나중에:
char *string = NULL;
int numberOfChars = 50; // you can use as many as you need
string = (char*)calloc(numberOfChars + 1, sizeof(char));
이를 위해 다음을 사용할 수 있습니다.
strcpy(string, "");
string[0] = "";
"경고: 할당은 깁스 없이 포인터로부터 정수를 만듭니다.
좋아요, 그 표현으로 들어가 볼까요?
0
int: 문자 수()를 나타냅니다.string
는 물체의 처음부터 전진하기 위한 것(또는 char*로 붕괴됨)입니다.string
string[0]
: 그.char
객체의 시작 부분에 위치한 객체string
""
: string literal:char[1]
=
: 할당 연산자: 유형 값을 할당하려고 합니다.char[1]
활자의 대상으로char
.char[1]
(에 decay됨)char*
) 및char
과제는 호환되지 않지만 컴파일러는 당신(프로그래머)을 신뢰하고 타입을 캐스팅하여 과제를 진행합니다.char*
(무엇을char[1]
썩어빠진int
--- 그리고 경고를 보너스로 받게 됩니다.당신은 정말 좋은 컴파일러를 가지고 있군요 :-)
아마고쉬가 정답을 맞춘 것 같습니다.크기를 알 수 없는 빈 문자열을 초기화하려면 다음과 같은 방법이 가장 좋습니다.
//this will create an empty string without no memory allocation.
char str[]="";// it is look like {0}
그러나 고정된 메모리 할당으로 문자열을 초기화하려면 다음 작업을 수행할 수 있습니다.
// this is better if you know your string size.
char str[5]=""; // it is look like {0, 0, 0, 0, 0}
조금 늦었지만 길이 1의 배열이 아닌 길이 0의 배열을 생성한 것이 문제가 될 수도 있습니다.
문자열은 일련의 문자 뒤에 문자열 터미네이터('\0'
빈 문자열()""
)은 문자열 터미네이터 문자가 하나도 없는 문자, 즉 총 1개의 문자로 구성됩니다.
그래서 저는 다음을 시도해 봅니다.
string[1] = ""
이 동작은 에뮬레이트된 것이 아닙니다.strlen
, 문자열 길이의 일부로 터미네이터를 계산하지 않습니다.
언급URL : https://stackoverflow.com/questions/4142745/initialize-a-string-in-c-to-empty-string
'programing' 카테고리의 다른 글
PHP나 자바스크립트를 사용하지 않고 콘텐츠에 맞게 텍스트 영역을 확장할 수 있는 방법이 있습니까? (0) | 2023.11.06 |
---|---|
$(이것은)serialize() -- 값을 추가하는 방법을 지정합니다. (0) | 2023.11.06 |
페이지가 로드될 때 텍스트 입력에서 포커스를 제거할 수 있습니까? (0) | 2023.11.01 |
팬더 데이터 프레임을 위치별로 자르는 방법은? (0) | 2023.11.01 |
MySQL이 null/empty를 반환하는지 확인하는 방법은 무엇입니까? (0) | 2023.11.01 |