programing

C의 문자열을 빈 문자열로 초기화

newsource 2023. 11. 6. 21:51

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] = "";
"경고: 할당은 깁스 없이 포인터로부터 정수를 만듭니다.

좋아요, 그 표현으로 들어가 볼까요?

0int: 문자 수()를 나타냅니다.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