السلام عليكم ..
أخواني .. شوفوا معاي هالـكود .. :
#include <iostream>
using namespace std;
char sub_string(char *source,int start,int count,char *dest);
void main()
{
char *p="Professional Programming";
int Start,counter;
char *dest;
cout<<"Start:";
cin>>Start;
cout<<"counter:";
cin>>counter;
cout<<sub_string(p,Start,counter,dest)<<endl;
}
char sub_string(char *source,int start,int count,char *dest)
{
char *r=new char[];
r[0]=source[start-1];
for (int i=1;i<=count;i++)
{
r=source[start];
start++;
}
dest=r;
return *dest;
}الكود هذا .. راح أرسل له الكلمة " Professional Programming "
وأبيه يبدا من الرقم 14 يعني حرف P ..
ويستمر يقرا بعدد 7 أحرف بعد الـ P ..
وبعد كذا يرجع لي في المتغير *dest النتيجة .. اللي هي الـ P والـ 7 أحرف بعده ..
يعني راح يكون : Program ..
المشكلة .. لما أطبق الكود في المايكروسوفت فيجوال c++ .. يعطيني وورنينج اللي هو :
warning C4700: local variable 'dest' used without having been initialized Linking...
لكن .. عند تطبيق البروجرام مع هالوورنينج ! .. يسوي كل حاجة .. لكن في الـ dest ..
بس راح يرجع لي الـ P لوحدها .. بدون الأحرف السبعة اللي بعدها ..
رغم أن الـ *r فيها كلمة Program كاملة !!
اللي أستغربه .. عند إسنادي هنا :
dest=r;
لا ينقل الا الـ r[0] ما الحل ؟!
أعتذر لإزعاجكم ..
Wase3 Sadr