C에서 const char*를 char*로 변환하는 방법
내 프로젝트에는 오직 a-method만 반환하는 방법이 있다.const char*단, 필요한 것은char*API가 받아들일 수 없는 문자열const char*.
다음 중 하나를 변환하는 방법을 알고 계십니까?const char*로.char*?
우선, 이러한 작업은 꼭 필요한 경우에만 수행해야 합니다. 예를 들어, 오래된 스타일의 API를 사용하는 등char*수정되지 않은 인수입니다.API 함수가 원래 일정했던 문자열을 수정하는 경우 이는 지정되지 않은 동작이며 크래시 가능성이 높습니다.
캐스트 사용:
(char*)const_char_ptr
안전을 위해 데이터를 부수거나(예: 코드에서 문자열이 변경된 경우) 프로그램을 중단하지 않습니다(예: 반환된 문자열이 리터럴인 경우)."hello I'm a literal string"편집을 시작합니다). 반환된 문자열의 복사본을 만듭니다.
사용할 수 있습니다.strdup()작은 글씨도 읽어보세요.또는 플랫폼에 없는 경우 자체 버전을 만들 수도 있습니다.
를 사용할 수 있습니다.strdup다음과 같은 원형을 가진 기능
char *strdup(const char *s1);
사용 예:
#include <string.h>
char * my_str = strdup("My string literal!");
char * my_other_str = strdup(some_const_str);
또는 버퍼에 strcpy/strncpy를 지정합니다.
또는 기능을 재작성하여 사용할 수 있습니다.const char *대신 파라미터로char *가능한 한 보존할 수 있도록const
A const포인터에 "읽기 전용" 메모리 위치를 나타냅니다.반면에 없는 사람들은const는 읽기/쓰기 메모리 영역입니다.즉, "변환"할 수 없습니다.const(읽기 전용 위치)에서 일반(읽기/쓰기) 위치로 이동합니다.
다른 방법은 데이터를 다른 읽기/쓰기 위치에 복사하고 이 포인터를 필요한 기능에 전달하는 것입니다.사용할 수 있습니다.strdup()이 작업을 수행합니다.
변환하려면const char*로.char*다음과 같은 함수를 만들 수 있습니다.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* unconstchar(const char* s) {
if(!s)
return NULL;
int i;
char* res = NULL;
res = (char*) malloc(strlen(s)+1);
if(!res){
fprintf(stderr, "Memory Allocation Failed! Exiting...\n");
exit(EXIT_FAILURE);
} else{
for (i = 0; s[i] != '\0'; i++) {
res[i] = s[i];
}
res[i] = '\0';
return res;
}
}
int main() {
const char* s = "this is bikash";
char* p = unconstchar(s);
printf("%s",p);
free(p);
}
이렇게 해서 캐스팅할 수 있어요.(char *)Identifier_Of_Const_char
하지만 api가 받아들이지 않는 이유가 있기 때문에const cahr *이 조작을 실행하는 것은, 확실히 하는 경우 뿐입니다만, 함수는, 그 범위내의 값을 할당하려고 하지 않습니다.const char*비변성적인 사람에게 던져준 거야
언급URL : https://stackoverflow.com/questions/25549562/how-to-convert-const-char-to-char-in-c
'programing' 카테고리의 다른 글
| DB:: select의 출력이 phpMyAdmin의 raw 쿼리와 다릅니다. (0) | 2022.10.15 |
|---|---|
| 함수에서 반환된 어레이의 요소에 액세스하는 방법 (0) | 2022.10.15 |
| Selenium 2.53이 Firefox 47에서 작동하지 않음 (0) | 2022.10.15 |
| MySQL InnoDB와 MyISAM의 복잡한 쿼리 성능 비교 (0) | 2022.10.15 |
| PHP에서 중단과 계속의 차이는 무엇입니까? (0) | 2022.10.15 |