교수님의 예를 들어 '좀비 변환기'코드가 있습니다. 내가 말할 수있는 것에서 그것은 일련의 영어 단어를 취하고 함수를 통해 몇 가지 규칙을 적용합니다. 이 작업을 수행하는 데 현재 strcpy
및 strcat
이 사용되지만, strcpy_s
으로 변경하더라도 컴파일되지 않습니다. 여기에, (공간을 위해) 다른 기능을 포함하지 않고 예를 들어 그래서 더 구체적으로char 사용시 폐기 된 strcpy/strcat 대체물 *
int main()
{
char english[MAX];
char zombie[MAX];
char zombie_word[MAX];
int pos_e; /* Current position in english line of text */
int pos_z; /* Current position in line of translated zombie text */
while (1) {
pos_e = 0;
pos_z = 0;
strcpy(zombie, "");
cout << ("Enter English text: ");
cin >> english;
/* This loop translates the line from english to zombie. */
do
{
get_next_word(english, &pos_e, zombie, &pos_z);
translate_word(english, &pos_e, zombie_word, &pos_z);
strcat(zombie, zombie_word);
} while (pos_e < strlen(english));
print_translation(zombie);
}
return 0;
}
로 내 주요 기능은 내가 무슨 라인에해야 strcat(zombie, zombie_word);
는 2015 비주얼 스튜디오에서 제대로 컴파일하게입니까?
학년을위한 것이 아니며, 나는 중간 고사 전에 이것을 이해할 수 있기를 정말로 원합니다. 그리고 그걸 가지고 놀기가 약간 어렵습니다. 나는 비슷한 것을 할 필요가있을 때 무엇을해야 할지를 알기 위해 _CRT_SECURE_NO_WARNINGS를 통해 그것을 비활성화하지 않는 것을 선호합니다.
아마도 char 변수를 문자열이나 그와 비슷한 것으로 변경해야할까요? 잠시 둘러 보았고 실제 프로세스를 찾을 수 없습니다. 도움을 주셔서 감사합니다. 시간을 내 주셔서 감사드립니다. Microsoft에서
문제점을 strcpy_s와 (와) 공유 할 수 있습니까? C++에 대한 더 나은 솔루션은 std :: string이지만, 어떤 단계에서 strcpy_s를 사용하는 방법을 알아야 할 수도 있습니다. –
C++에서 옳은 대답은 거의 언제나'char *'를'std :: string'으로 변환하는 것이지만'strcat'와 친구들을 _s 버전으로 대체했을 때 관심이 없으면 무엇이 잘못 됐습니까? 두 가지의 차이점을 알아 보려면 [documentation page] (https://msdn.microsoft.com/en-us/library/d45bbxx4.aspx)를 읽었습니까? – user4581301
내 오류가 다른 함수 내에있는 것 같습니다. strcpy_s 오류 메시지 : 오버로드 된 함수의 인스턴스가 없습니다. "strcpy_s"는 인수 목록과 일치합니다. – lana