با سلام سورس ادغام کردن دو رشته رو خواستم با تابع بنویسم که مشکل داره:
1) بعضی کامپایلر ها به روی مبارک شون نمیارند اما در زبان ++C وقتی شما جایی یک متغیر محلی تعریف می کنید،
ناحیه ای که اون متغیر قابل استفاده است، همون بلوکی است که متغیر تعریف شده. فرضا این متغیر x در کل تابع
ali قابل استفاده است :
اما این x داخل حلقه for تعریف شده و فقط داخل همون حلقه for قابل دسترسی یه :
کد:
void ali()
{
for (int x = 0; x < 5; x++)
{
برای همین این کد ایراد داره، شما نمی توانید از مقادیر z و s خارج از حلقه for شون استفاده کنید چون داخل
حلقه for تعریف شده اند و در بقیه کد های تابع وجود خارجی ندارند :
کد:
for(int z=0;x[z]!=0;z++);
for(int s=0;y[s]!=0;s++);
for(int k=0;k<s;k++)
متغیر های اینچنینی رو که بیرون حلقه بهشون نیاز دارید رو خارج از حلقه for تعریف کنید :
کد:
int z, s;
for(z=0;x[z]!=0;z++);
for(s=0;y[s]!=0;s++);
for(int k=0;k<s;k++)
2) شما برای انتقال کاراکتر از متغیر اشتباهی استفاده کرده اید :
کد:
for(int k=0;k<s;k++)
x[z+k]=y[[B][COLOR="Blue"][SIZE="3"]s[/SIZE][/COLOR][/B]];
متغیر s در داخل حلقه هیچ تغییری نمی کنه، شما که نمی خواهید مدام یک کاراکتر ثابت و تکراری رو به رشته x
اضافه کنید، باید بجای s از k استفاده می کردید.
3) کاراکتر انتهای رشته '0\' است، نه '0/' ، می توانید بجای '0\' از 0 استفاده کنید :
کد:
#include <iostream.h>
#include <conio.h>
void ali(char x[],char y[])
{
int z, s, k;
for (z = 0; x[z] != 0; z++);
for (s = 0; y[s] != 0; s++);
for (k = 0; k < s; k++)
x[z + k] = y[k];
x[z + k] = '\0';
cout << x;
}
int main()
{
clrscr();
char a[99], b[99];
cin >> a;
cin >> b;
ali(a, b);
getch();
return 0;
}