명령 줄 인수를 문자열로 연결하려고합니다. 처음에는 문자열을 선언하기 위해 문자 유형의 포인터를 사용했습니다.C의 세그먼트 오류. 명령 줄 인수를 연결하려고 시도했습니다.
char *str;
strcpy(str, argv[1]);
int i = 2;
while(i < argc) {
realloc(str, sizeof(str) + sizeof(argv[i]) + 1);
str = strcat(str,argv[i]);
i+=1;
}
printf("%s", str);
free(str);
위에서 볼 수 있듯이 새로운 메모리를 연결하기 위해 메모리 블록을 재 할당하고 있습니다. 위의 문자 포인터에 할당하지 (11)
'sizeof (str)'은 여러분이 생각하는대로하지 않습니다. 플랫폼에 따라 보통 8 또는 4가됩니다. 'sizeof (argv [i])'는 같은 것이다. –
그 외에도 첫 번째'strcpy()'(루프 앞에 있음)는 이미 초기화되지 않은 포인터를 사용하여 데이터를 복사하려고합니다. – mfro