사용자 argv를 얻고 결과를 화면에 출력하려고합니다. 다음 코드는 다음과 같습니다.C - strcat 관련 문제
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
if (argc >= 1)
{
char *command = "gcc ";
strcat(command, argv[1]);
printf("%s", command);
return 0;
}
}
컴파일됩니다.하지만 실행할 때마다 "Windows가 작동하지 않습니다."라는 메시지가 표시됩니다. 기본적으로, 사용자가 않는 경우 :
myprogram.exe test
출력은
gcc test
가 어디에 오류가 될 수 있을까요?
50 대신 5001을 사용했습니다. 감사합니다. –
동적 할당의 다른 답변을 염두에 두십시오. 결국 5001의 배열에 맞지 않는 입력을 얻을 수 있습니다. – Henry
이로 인해 정의되지 않은 동작이 발생합니다. 'strcat'는 기존 문자열에 추가하지만'command'는 초기화되지 않습니다. 'strcpy'로 시작하거나,'command [0]'을 최소한'0'으로 초기화해야합니다. –