PDA

View Full Version : چسباندن دو آرایه به هم



mazy12
شنبه 09 اردیبهشت 1391, 03:13 صبح
سلام دوستان ،

من دو تا آرایه دارم از نوع char


char* array1 = "this is good";
char* array2 = text


مقدار آرایه اول مشخصه اما دومی از تابع میاد، میخوام محتوای آرایه دوم کنار آرایه اول قرار بگیره به فرض اگه text = way باشه بشه this is good way ، نمیخوام از تابع strcat استفاده کنم چون باعث میشه برنامه کرش کنه. راه دیگه ای سراغ دارید ؟

jannatmakan
شنبه 09 اردیبهشت 1391, 05:46 صبح
بیا برادر . امیدوارم به دردتون بخوره.

int i=0,j=0;
while(array1[i]!='\x0')
{
i++;
}


while(array2[j]!='\x0')
{
array1[i]=array2[j];
j++;
i++;
}

for(i=0;array1[i]!='\x0';i++)
{
cout<<array1[i];
}

ASGGSA
شنبه 09 اردیبهشت 1391, 06:20 صبح
سلام دوستان ،

من دو تا آرایه دارم از نوع char


char* array1 = "this is good";
char* array2 = text


مقدار آرایه اول مشخصه اما دومی از تابع میاد، میخوام محتوای آرایه دوم کنار آرایه اول قرار بگیره به فرض اگه text = way باشه بشه this is good way ، نمیخوام از تابع strcat استفاده کنم چون باعث میشه برنامه کرش کنه. راه دیگه ای سراغ دارید ؟
سلام.
جواب درست شما در پیوند زیر هست.
http://barnamenevis.org/showthread.php?338431-توضیح-کد
موفق باشید.

ASGGSA
شنبه 09 اردیبهشت 1391, 06:35 صبح
بیا برادر . امیدوارم به دردتون بخوره.

سلام.
باتشکر از شما که پاسخ دوستمان را دادید اما بهتر :
در حلقه ها از کاراکتر NULL استفاده نکنید( NULL == false).
در دستور آخر نیازی به for نیست :

cout << Array1;

mehdi.mousavi
شنبه 09 اردیبهشت 1391, 18:53 عصر
سلام دوستان ، من دو تا آرایه دارم از نوع char


char* array1 = "this is good";
char* array2 = text


مقدار آرایه اول مشخصه اما دومی از تابع میاد، میخوام محتوای آرایه دوم کنار آرایه اول قرار بگیره به فرض اگه text = way باشه بشه this is good way ، نمیخوام از تابع strcat استفاده کنم چون باعث میشه برنامه کرش کنه. راه دیگه ای سراغ دارید ؟

سلام.
وقتی می فرمایید برنامه Crash میکنه، باید دنبال ایراد اصلی بگردید و اونو رفع کنید، نه اینکه بگید به این دلیل که برنامه Crash میکنه نمی تونم از strcat استفاده کنم. در برنامه نویسی، همواره بدنبال منبع اصلی تولید خطا باشید، ممکنه الان با استفاده نکردن از strcat مشکل بنظر رفع شده باشه، اما در حقیقت، شما دارید مشکل برنامه (که احتمالا در کار با Pointer ها پیش اومده) رو یک Level عقب تر میندازید و جایی، تاوان سنگین تری رو خواهید پرداخت (به این "بدهی فنی" نمیگن، اگه فرصت کنم در این مورد قدری خواهم نوشت). در هر حال، برای اینکه دو تا Char Array رو به هم بچسبونید، می تونید از sprintf (http://msdn.microsoft.com/en-us/library/ybk95axf%28v=vs.71%29.aspx) استفاده کنید:


char *p1 = "string one";
char *p2 = "string two";

char res[255] = {NULL};
sprintf(res, "%s %s", p1, p2);


موفق باشید.