PDA

View Full Version : سوالي درباره ذخيره خروجي يك رشته از تابع با طول هاي متفاوت در يك ارايه



one hacker alone
یک شنبه 27 فروردین 1391, 01:16 صبح
سلام

يه تابع داريم كه رشته توليد ميكنه حالا اين رشته يا طولش 1 هست يا طولش 5 هست يا 0 من ميخوام اين رشته در ارايه ذخيره بشه يعني اگه رشته اول ali بود ali در ارايه ذخيره بشه و اگه رشته بعدي a بود محتواي اون ارايه بشه alia
براي به جلو بردن اشاره گر به رشته و تنظيم اين طول من كد زير رو نوشتم اما برنامه هنگ ميكنه شما چي پيشنهاد ميدين


int main()
{
char *temp[100];
int len=0,i=0;
while(1)
{
len=strlen(f());
if(len!=0)
if(len==1)
{
*(temp + i)=f();
i++;
}
else
{
*(temp+i)=f();
i+=5;
}
cout<<"temp lenght="<<strlen(*temp)<<endl;
cout<<temp<<endl;
cout<<"i="<<i<<endl;
}
}

one hacker alone
یک شنبه 27 فروردین 1391, 22:52 عصر
دوستان مارو راهنمايي كنيد

Ananas
دوشنبه 28 فروردین 1391, 01:32 صبح
سلام.
فکر میکنم به خاطر while بی پایان باشه. break هم که نداره!

one hacker alone
دوشنبه 28 فروردین 1391, 04:57 صبح
نه منطقي نيست چون تابع هميشه كه رشته توليد نميكنه اصلا شما فرض كن while نيست خودتون بودين چجوري مينوشتين

Ananas
دوشنبه 28 فروردین 1391, 10:58 صبح
من هستم اینطوری مینویسم :

#pragma hdrstop
#pragma argsused

#include <tchar.h>
#include <stdio.h>
#include <iostream.h>
using namespace std;

randomize();
char * f()
{
if (random(2))
return "55555";
else
return "1";
}

int _tmain(int argc, _TCHAR* argv[])
{
char * ch[100];
char *_f = NULL;
int len = 0, i = 0;
//-----------------
while (getchar() != '0')
{
if (i >= 94)
break;
_f = f();
len = strlen(_f);
if (i == 0)
strcpy((char *)&ch[0], _f);
else
strcat((char *)&ch[0], _f);
i += len;
printf((char *)&ch[0]);
}
printf((char *)&ch[0]);
getchar();
return 0;
}

one hacker alone
دوشنبه 28 فروردین 1391, 14:10 عصر
ممنون با تابع strcat حل شد اصلا فكرم به توابع كار با رشته نرسيده بود
فقط يه مشكل ديگه اي كه دارم اينه كه كلماتي كه وارد اين ارايه ميشه به درستي ذخيره ميشه اما وقتي در فايل ذخيره ميكنم حروف جابجا ميشه مثلا salam به شكل saalm در ميادو كلمات ديگه هم قاطي ميشه

Ananas
دوشنبه 28 فروردین 1391, 15:06 عصر
ببینم کاراکترها دو تا دو تا جابجا میشن؟
شاید بخاطر Ansi یا widechar باشه که اولی 8 بیت و دومی 16 بیت هست و شاید موقع ذخیره کردن کاراکتر ها رو دو تا دوتا ذخیره میکنه. تو فایل متنی ذخیره می کنی یا باینری؟ با چی باز میکنی می بینی جابجا شده؟