문제가있어서 그 이유를 알 수 없습니다. main에서 2 개의 문자열 배열을 만듭니다. 함수가 다음의 요구 사항에 따라 2 문자열을 수용하고 적절한 크기의 새로운 배열을 작성 어레이 (1) : 아비브 어레이 (2) : 12 새로운 배열 예 : a12v12i12v 새로운 배열 정확히 있어야 크기! 그런 다음 새 배열을 main 및 main에 보내 인쇄하십시오. 나는 또한 정크 값을 출력한다. 새 배열의 크기를 확인했는데 올바른 크기입니다. 내 코드 : 어느 문자열 str1
이나 문자열 str2
함수 변경되기 때문에정크 값으로 인쇄하십시오.
char* CreateString(char* str1, char* str2)
{
int length1, length2, length3 = 0;
int i,j, index_help = 0;
char *str3 = NULL;
length1 = strlen(str1);
length2 = strlen(str2);
for (i = 0; i < length1; i++) // Check the size of the new array
{
length3++;
if (i == (length1 - 1))
{
break;
}
for (j = 0; j < length2; j++)
{
length3++;
}
}
str3 = (char*)malloc(length3+1 * sizeof(char));
if (str3 == NULL)
{
printf("There is not enough memory space\n");
return 0;
}
for (i = 0; i < length1; i++) //Copying data
{
str3[index_help] = str1[i];
if (i == (length1 - 1))
{
break;
}
for (j = 0; j < length2; j++)
{
index_help++;
str3[index_help] = str2[j];
}
index_help++;
}
return str3;
}
int main()
{
char *str1 = NULL, *str2 = NULL,*str4=NULL;
int size1, size2,i;
printf("enter the size of string number 1:\n");
scanf("%d", &size1);
printf("enter the size of string number2 :\n");
scanf("%d", &size2);
str1 = (char*)malloc((size1 + 1) * sizeof(char));
if (str1 == NULL)
{
printf("There is not enough memory space\n");
return 0;
}
str2 = (char*)malloc((size2 + 1) * sizeof(char));
if (str2 == NULL)
{
printf("There is not enough memory space\n");
return 0;
}
printf("Enter a value for the first string (the size is:%d):\n", size1);
scanf("%s", str1);
printf("Enter a value for the second string (the size is:%d):\n", size2);
scanf("%s", str2);
str4 = CreateString(str1, str2);
printf("%s",str4);
printf("\n");
return 0;
}
'(I = 0; I <길이 1] 나가 ++)'- 제'for' 루프 - 여기서 논리는 무엇입니까? 루프를 수행하지 않고도 수행 할 수 있습니다. –
문자열 배열을 볼 수 없습니다. –
문자열 끝에 정크 문자가 있습니다. 문자열을 종료하는 것을 잊어 버린 채로 죽은 공짜입니다. –