: 당신은 배열을 만든 후
수동 중 전체 배열을 만들어서을 문자열을 종료하는 것은 밖으로, 또는 단지 첫 번째 문자로 영을 넣어 "제로" 여기서 차이점은 기본적으로 두 개의 빈 배열을 하나의 메모리 공간에 병합하려고 시도하고 있다는 것입니다 (이것이 맞는지 확실하지 않음).
우선 C에서 \0
으로 문자열을 종료해야합니다. 이는 Java에서 노출되거나 보이지 않는 것입니다. 또한 기본적으로 두 개의 정의되지 않은 문자열을 사용합니다 (값이 설정되지 않았으므로).
#include <stdio.h>
#include <string.h>
char target[256];
const char source_a[] = "Hello";
const char source_b[] = "World!";
int void(main)
{
target[0] = '\0'; // this essentially empties the string as we set the first entry to be the end. Depending on your language version of C, you might as well write "char target[256] = {'\0'};" above.
strcat(target, source_a); // append the first string/char array
strcat(target, " "); // append a const string literal
strcat(target, source_b); // append the second string
printf("%s\n", target);
return 0;
}
중요 :이 수행에는 길이 체크 없다, 자바 이외는,이 "문자열"고정 길이 (변수를 정의 할 때 설정 한)를 가지고 strcat()
를 사용하면, unsave 수 있습니다. 길이가 지정되지 않았지만 초기화시 문자열을 복사하면 그 길이가 사용됩니다 (예 : char test[] = "Hello!";
은 길이가 7 자 (\0
종료)).
문자열에 대해 더 많은 Java 방식을 사용하려면 C++과 std::string
클래스를 사용합니다.이 클래스는 Java 문자열과 훨씬 비슷합니다.
c에서 널 (0x0) 문자로 문자열을 명시 적으로 종료해야합니다. – StuartLC
죄송합니다, "const char 및 char 연결"무엇입니까? 그것은이 맥락에서 이해가되지 않는 것 같습니다. 또한, 뭔가를 strcatting하기 전에 tcp 배열을 초기화 하시겠습니까? –
const char의 내용을 편집 할 수 없으므로 빈 배열의 다른 char과 결합하려고합니다. 적어도 그것은 계획이었습니다. – Max