ايران ويج

نسخه‌ی کامل: کمک در حل تمرین
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام . من برنامه ای نوشتم که کارش اضافه کردن یک رشته در میان یک رشته دیگه هست .اما قبل از اینکه رشته دوم رو از من بگیره ،مکان جایگذاری رشته رو می خواد ومی شه ببینید ایرادش کجاست ؟ مرسی

#include <iostream.h>
#include <string.h>
char fun(char str1[20],char str2[5],int Lo);
int main()
{
char str1[20];
int Lo ;
char str2[5];
cout << "Type the first string: ";
cin.get(str1,20);
cout << "Type the second string: ";
cin.get(str2,20);
cout << "Enter the location: " ;
cin >> Lo;
fun(str1[20],str2[5],Lo);
return 0;
}
//******************************************
char fun(char str1[20],char str2[5],int Lo)
{
char str3[20];
char str4[20];
int j=0;

for(int i=Lo;i<strlen(str1);i++)

{


str3[j]=str1[i];


j++;

}

for (int n=0;n<Lo;n++)

str4[4]=str1[n];


strcat(str4,str2);

strcat(str4,str3)

cout << str4;

return 0;
}
سلام
فکر میکنم اشکال برنامت فقط در قسمت (cin.get(str2,20 باشه..چون شما طول رشته ی str2را حداکثر 5 تا تعریف کرده بودین ولی اینجا میخواین رشته ای با طول بیشتر از اونو داخلش بریزین....

(البته یه دلیل دیگه هم میتونه داشته باشه اینکه شما 20 تا کاراکتر وارد میکنین به خیال اینکه این 20 تا داخل رشته ی اول ذخیره بشن ولی اون بیستمین کاراکترواردشده را بعنوان رشته ی دوم در نظر میگیره چون در اصل رشته ی اول 19 کاراکترو میتونه توی خودش جا بده..چون بیستمیش کاراکتر صفر(یا پوچ)هستش.

شاید بهتر بود طول این آرایه هارو مقدار مشخص نمیدادین و با const int max1,max2,... به صورت مقدار ثابت تعریف میکردین....
راستی فکر کنم تابع funهم که تعریف کردی اشکال داشته باشه ...چون شما طول رشته ی str4هم 20 تایی گرفتین درصورتیکه میخواین با دستور strcatدوتا رشته را به هم بچسبونین که طولش هم از 20 بیشتر میشه.پس بهتره طول این رشته را 25 بگیرین