PDA

View Full Version : سوال: راجع به چسباندن دو رشته



Dr.Defacer
جمعه 21 فروردین 1388, 16:41 عصر
سلام دوستان من می خوام 2 تا آرایه رو داخل یک آرایه ادغام کنم اما هر کار می کنم نمیشه از این دو روش استفاده کردم اما نمیشه !
روش اول :
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
void main()
{
char ch[10];
char ch2[10];
char ch3[20] ;
int i,b,j;
scanf("%s%s",ch,ch2);
for (i=0;i<10;i++)
{
if (ch[i]==' ')
{ b=i ;
break;
}
else
ch3[i]=ch[i];
}
for(j=b;j<220;j++)
{
if (ch2[j]=='\o')
break;
else
ch3[j]=ch2[j] ;
}
cout<<ch3;
getch();
}
روش دوم:

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int amin(char[] ,int ,int)
{
char ch[10];
int i,j=0;
scanf("%s",&ch);
for(i=0;i<10;i++)
if (ch[i]!='\0')
j++;
else
break;
return j;
}
void main()
{
char ch2[10];
char ch3[10];
char ch4[25];
int a,b,c,i,j;
c=amin(ch2,a,b);
scanf("%s%s",ch2,ch3);
for (i=0;i<=c;i++)
ch4[i]=ch2[i];
for(j=i;j<=20;j++)
ch4[j]=ch3[j];
cout<<ch4 ;
getch();
}
چیکار کنم؟ !!!! :ناراحت::ناراحت::گریه:

pswin.pooya
جمعه 21 فروردین 1388, 20:56 عصر
برای چسبوندن دو رشته به هم میتونی از دستور strcpy استفاده کنی.

Sundown
جمعه 21 فروردین 1388, 21:28 عصر
if (ch[i]==' ')


البته بهترین راه استفاده از دستور strcpy هست اما برای آرایه شما شرط رو اشتباه قرار دادید.
در آخر رشته کارکتر Null قرار میگیره که میتونید از اون برای شرط استفاده کنید ( در صورتی که شما به اشتباه از کارکتر فاصله خالی استفاده کرده اید )

موفق باشید

Dr.Defacer
جمعه 21 فروردین 1388, 22:01 عصر
نمیتونم از strcopy استفاده کنم باید خودم تابعش رو بنویسم ! و شما میگید اخرش null هست . اخر ارایه من null هست ارایه من 10 عضو داره و ممکنه رشته من 3 -4 تا بیشتر نباشه پس نمیتونم از null استفاده کنم . اصلا خودتون راهی بلدید برای چسباندن 2 تا رشته به هم بعنی 2 تا آرایه رو کنم یکی؟

Salar Ashgi
جمعه 21 فروردین 1388, 23:02 عصر
سلام ، توضیح اینکه تابع strcpy برای کپی کردن یک رشته در رشته ای دیگر است و برای

چسباندن یا به عبارتی الحاق دو رشته باید از strcat استفاده کرد ، ولی بدون استفاده از

آن هم میشه این کار رو انجام داد :

مثال نمونه :


#include <iostream>
#include <conio>
int main(){
char a[]={"Welcome "};
char b[]={"to C++"};
char c[14];
for(int i=0;i<=7;i++)
c[i] = a[i];
for(int i=8;i<=13;i++)
c[i] = b[i-8];
//---------------------
for(int i=0;i<=13;i++)
cout<<c[i];
cout<<endl;
getch();
}

موفق و پیروز باشید !!!

Sundown
شنبه 22 فروردین 1388, 00:22 صبح
کدی که دوستمون گذاشتن یک مشکل داره و اون هم این هست که باید طول رشته رو بدونیم
این کد بدون نیاز به طول رشته و بدون استفاده از تابع Strlen و هر تابع رشته ای دیگری دو رشته رو به هم می چسباند


#include <stdio.h>
#include <conio.h>

void main()
{
char str1[10],str2[10],str3[20];
scanf("%s%s",str1,str2);
int i=0;
while(str1[i])
{
str3[i]=str1[i];
i++;
}
int str1_Len=i;
i=0;
while (str2[i])
{
str3[str1_Len+i]=str2[i];
i++;
}
printf("%s",str3);
getch();
}


موفق باشید

soltanc
شنبه 22 فروردین 1388, 05:22 صبح
while (str1[i]) != \0
این کد خوانایی برنامه رو افزایش میده