PDA

View Full Version : سوال: تغيير مقدار متغيرها در زمان اجراي برنامه



mehdimdp
جمعه 22 آبان 1388, 17:58 عصر
سلام
وقت همگي بخير
من يه برنامه با c نوشتم كه چند تا رشته ي عددي رو از كاربر دريافت ميكنه و بعد اونا رو با چندتا اصلش به هم متصل ميكنه و تبديل ميشه به يك آدرس فايل
مشكل من اينجاست كه هر دفعه كه برنامه اجرا مي شه وسط برنامه مقدار متغيرها عوض ميشه
نميدونم چيكار كنم.

mehdimdp
جمعه 22 آبان 1388, 17:59 عصر
اين هم سورس برنامه


#include"string.h"
#include"conio.h"
#include"iostream.h"
#include"stdio.h"
#include"stdlib.h"
void main()
{
char das[2]={"\0"};
char sal[2]={"\0"};
char mah[2]={"\0"};
char sf[30]={"\0"};
char SrcFile[255]={"\0"};
char TrgFile[255]={"\0"};
FILE *srcfp;
FILE *trgfp;
clrscr();
cout<<"\nPlease Enter Number:";
gets(das);
cout<<"\nPlease Enter Year:";
gets(sal);
cout<<"\nPlease Enter Month:";
gets(mah);
strcat(das,"1");
strcat(sal,"88");
strcat(sf,"c:\\mahsun\\sal88\\");
strcat(sf,sal);
strcat(sf,"\\");
strcat(sf,"dasg");
strcat(sf,"1");
strcat(sf,"\\");
strcat(sf,"mah");
strcat(sf,mah);
strcat(sf,"\\");
char temp[2]={NULL};
strcat(temp,mah);
strcat(sf,"188");
strcat(sf,sal);
strcat(sf,mah);
strcat(sf,".prc");
strcat(sf,NULL);
cout<<sf;
strcpy(SrcFile,sf);
char tf[30]={"\0"};
strcat(tf,"a:\\");
strcat(tf,das);
strcat(tf,sal) ;
strcat(tf,mah);
strcat(tf,"1");
strcat(tf,"\0");
strcpy(TrgFile,tf);
cout<<TrgFile;
char buff [1024];
srcfp = fopen( SrcFile, "rb+");
if (srcfp==NULL)
{cout<<"not found";
}
if( srcfp!=NULL ){
trgfp = fopen( TrgFile, "wb+");
buff[0] = fgetc( srcfp );
while( buff[0] != (char)EOF ){
fputc( buff[0], trgfp );
buff[0] = fgetc( srcfp );
}
fclose( trgfp );
fclose( srcfp );
cout<<"\nCopy Finished!\nPress any key to exit";
}
getch();
}


مثلا بعداز هربار اجراي دستور strcat مقدار متغير das يا mah يا sal نال ميشه

mortezamsp
جمعه 22 آبان 1388, 19:10 عصر
باسلام.

احتمالا علتش اینه که شما با دستور gets() دارید یک عدد رو میخونید و اگر این عدد 0 باشه رشته بسته میشه.
برای گرفتن عدد باید رشته رو اول به عدد تبدیل کنید بعد به انتهای رشته بچسبونید.

ضمنا


char temp[2]={NULL} این غلطه و رشته رو میبنده
char temp[2]=" "; این درسته