کمک در مورد یه نوع از فایل های متنی
سلام
من یه برنامه میخوام که یه فایل با نامش که کاربر نامشو انتخاب کنه تو یه درایو یا یه فولدر تو یه درایو بریزه و هر چی دلش خواست توش وارد کنه (عدد،حرف،spaceو...) و تو یه فایل دیگه بیاد اعداد صحیح یا اعشاری رو بریزه یعنی مثلا تو فایل داریم
am efkjd12sldjkad12 kasjd 12.1 dja345
بعد بیاد تو فایل دوم یعنی فایل چاپش اینجوری چاپ کنه
12
12
12.1
345
میبینید که هر عددی رو که میگیره یه خط میره پایینتر یعنی باید این کارم انجام بشه
ببینید من ترم اولیم و درسامونو و تمرینام تموم شده
این سوال یه سوال تو امتحانمون بود که هنوز استادمون چنین سوالی رو طرح نکرده بود و من اصلا نمیدونم چجوری باید حلش کرد پس از مدیر این بخش خواهش میکنم که احساس نکنن که من تمرین دانشجویی دادم و بیانو تاپیکمو حذف کنن
در ضمن بگم که فقط از توابع fscanf و fprintf میخوام استفاده کنم نه با امکانات بیشتر
یه چیز دیگه نوع فایلش متنی (notepad) باشه
واقعا ممنون میشم اگه به من کمک کنید :خجالت:
خیلی نوکریم:چشمک:
نقل قول: کمک در مورد یه نوع از فایل های متنی
خوب دوست عزیز کار با فایل رو که بلد هستید ایشالا !؟
فکر نمیکنم نیازی باشه تمام کد نوشته بشه. فرض کن فایل اولیه اسمش input هست و فایل دومیه که قراره توش بنویسیم اسمش output هستش. راستی این فایل اولیه فقط یه خط داره !؟
char str[100];
fscanf(input, "%s", str);
for(int i=0; i<strlen(str); i++){
if(str[i]>='0' && str[i]<='9'){
while(str[i]>='0' && str[i]<='9'){
fprintf(output,"%c",str[i]);
i++;
}
if(str[i]=='.' && str[i+1]>='0' && str[i+1]<='9'){
fprintf(output,".");
i++;
while(str[i]>='0' && str[i]<='9'){
fprintf(output,"%c",str[i]);
i++;
}
}
fprintf(output,"\n");
}
}
نقل قول: کمک در مورد یه نوع از فایل های متنی
نه
هر چی می خواد باشه دو خط سه خط ...
الان اینی که شما نوشتین نام فایل رو هم مشخص میکنه ؟؟
نقل قول: کمک در مورد یه نوع از فایل های متنی
در مورد اینکه اسم فایل رو هم مشخص میکنه یا نه ، خوب من فکر کردم اونجاش رو بلدی !!
اما به هر حال این قسمت رو میتونی به ابتدای برنامت اضافه کنی :
FILE *input,*output;
char name_input[100],name_output[100];
scanf("%s%s",name_input,name_output);
input=fopen(name_input,"r");
outout=fopen(name_output,"w");
و اما اینکه چجوی بفهمی انتهای فایل هستی یا نه :
while( fscanf( input, " %s", str) !=EOF )
نقل قول: کمک در مورد یه نوع از فایل های متنی
نقل قول:
نوشته شده توسط
qwerty11
در مورد اینکه اسم فایل رو هم مشخص میکنه یا نه ، خوب من فکر کردم اونجاش رو بلدی !!
اما به هر حال این قسمت رو میتونی به ابتدای برنامت اضافه کنی :
FILE *input,*output;
char name_input[100],name_output[100];
scanf("%s%s",name_input,name_output);
input=fopen(name_input,"r");
outout=fopen(name_output,"w");
ببینید این که نوشتین درست ولی اگه بخوایم آدرس بذارم چی؟
یعنی بخوایم فایل تو مثلا درایو سی ریخته بشه یا تو یه فولدر تو درایو سی؟؟؟
نقل قول: کمک در مورد یه نوع از فایل های متنی
خواهشا میشه برنامه کامل اون چیزی که تا حالا رو گفتم بنویسین
خیلی خیلی ممنون
نقل قول: کمک در مورد یه نوع از فایل های متنی
نقل قول:
نوشته شده توسط
amir-yeketaz
ببینید این که نوشتین درست ولی اگه بخوایم آدرس بذارم چی؟
یعنی بخوایم فایل تو مثلا درایو سی ریخته بشه یا تو یه فولدر تو درایو سی؟؟؟
وا !!! خوب تو همون قسمت input_name میتونی آدرس هم بدی دیگه !! یعنی مثلاً input_name رو c:\\aa.txt بزاری.
کل برنامه !؟ هرجوری فکر میکنم میبینم کل برنامه رو نوشتم ! ولی به هر حال :
void main(){
FILE *input,*output;
char name_input[100],name_output[100];
scanf("%s%s",name_input,name_output);
input=fopen(name_input,"r");
output=fopen(name_output,"w");
char str[100];
while( fscanf( input, " %s", str) !=EOF ){
for(int i=0; i<strlen(str); i++){
if(str[i]>='0' && str[i]<='9'){
while(str[i]>='0' && str[i]<='9'){
fprintf(output,"%c",str[i]);
i++;
}
if(str[i]=='.' && str[i+1]>='0' && str[i+1]<='9'){
fprintf(output,".");
i++;
while(str[i]>='0' && str[i]<='9'){
fprintf(output,"%c",str[i]);
i++;
}
}
fprintf(output,"\n");
}
}
}
}