2013-04-12 2 views
-1

문자열을 초기화하는 한 줄 방법이 있습니까? 나는 다음과 같은 일을하고 싶은문자열을 초기화하는 단일 행 방법이 있습니까?

string str = "Example";

C에서,하지만 내 컴파일러는 불평 : 예를 들어, C#에서 간단히 할 것이다

char str[] = "Example";

편집 :

char str[] = "Example";

... 실제로 작동합니다. 제 컴파일러는이 줄에 대해 불평하지만 실제 문제는 이전 줄에 있습니다. 아래의 다니엘 피셔 (Daniel Fischer)의 발언은이 발견을 이끌어 냈습니다. 혼란에 진심으로 감사드립니다. 문자의 집합으로

당신은이 두 가지 방법 중 하나를 사용할 수 있습니다
+1

무엇이 오류입니까? – SLaks

+6

'char str [] = "예제";는 완벽하게 유효한 C이며 권장되는 방법 중 하나입니다. –

+2

C 스 니펫은 유효합니다. 컴파일러 오류를 게시하십시오. – hmjd

답변

1

문자열을 초기화하는 방법은 이미 맞습니다. 그 행 위의 다른 곳에 오류가있을 수 있습니다.

char str1[] = "string"; // static array 
char* str2 = "string"; // Pointer points to a constant 

정적 배열 (1 방법) 당신이 그것을 초기화 후 내용을 수정 할 수 있기 때문에 여기 추천 :

기술적으로는이 작업을 수행하는 두 가지 방법이있어. 그러나 문자열이 읽기 전용 메모리에 저장되므로 2 nd 메서드의 내용을 수정할 수 없습니다.

참고 : 2 nd 메서드의 경우 또는 현재 문자열을 수정하는 대신 새 문자열에 새 메모리를 할당 할 수 있습니다. 할당 한 후 strcpy() 함수를 사용하여 문자열을 할당하십시오. 또한 수행 할 때 free(str);을 호출하여 메모리를 할당 해제하는 것을 잊지 마십시오.

0

...

  1. 사용 문자열은 널 ('\ 0') 문자로 종료됩니다.

    char ch [] = { 'E', 'x', 'a', 'm', 'p', 'l', 'e', ​​'\ 0'};

  2. 원하는 경우 어레이 변수 이름이 증가하거나 감소하는 것과 같이 ERROR를 생성해야하므로 사용할 수도 있습니다.

    const char * ch = "예";

+0

두 번째 접근법이 잘못되었습니다. ** const ** 한정자 여야합니다 **. 정말. –

+0

괜찮아요. 수정했습니다 .... –

+0

여전히 좋지는 않지만 여러 가지 문제가 있습니다. 'const'에 대해 읽어보십시오. –

관련 문제