مشکل با جمع دو رشته - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکل با جمع دو رشته

+3 امتیاز
چه طور ميشه دو رشته رو که ما بين اونها نال هم وجود داره رو با هم جمع کرد؟
 
	char str1[] = {'A','B','C', 0, 'D', 'E'};
	char str2[] = {'F','G', 0, 'H', 'I'};

	char *res = new char[9];

	strcpy(res, str1);
    strcat(res, str2);

	printf("Result: %s\n", res);

 

 

سوال شده فروردین 29, 1393  بوسیله ی Sami (امتیاز 178)   2 6 16

1 پاسخ

+4 امتیاز
 
بهترین پاسخ

اگر هر 2 تا رشته + null رو می خوای به هم وصل کنی یک راه خوب و سریعش استفاده از memcpy هستش

    char str1[] = {'A','B','C', 0, 'D', 'E'};
    char str2[] = {'F','G', 0, 'H', 'I'};


    int str1_size=sizeof(str1)/sizeof(char);
    int str2_size=sizeof(str2)/sizeof(char);

    char *res = new char[str1_size+str2_size];

    memcpy(res,str1,str1_size);
    memcpy(res+str1_size,str2,str2_size);

ولی خب از سوالتون مشخصه که null ها رو نمی خوای اضافه کنی اگر این طوریه که یک for بزار و دونه دونه کاراکتر ها رو کپی کن .

جالا چرا از std::string استفاده نمی کنی ؟

پاسخ داده شده فروردین 29, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد فروردین 29, 1393 بوسیله ی Sami
تا موقع که مجبور نشم قصد ندارم از std:string استفاده کنم.
نه دقيقاً ميخوام با مقدار نال جابه جا بشن
memcpy رو قبلاً تست کرده بودم متأسفانه همين نتيجه رو داره
نه memcpy  درست کار می کنه مشکل از print هستش که تا null بیشتر چاپ نمی کنه
    printf("Result: %s\n", res);
    printf("Result: %s\n", res+4);
    printf("Result: %s\n", res+9);
بله حق با شماست اما عجيبه تو حالت ديباگ مقدار نال رو تو str1 نشون ميده اما تو res تا ABC نشون ميده
بخاطر اینه که اون آرایست این char* ... آرایه با char* یکی نیست
...