PDA

View Full Version : سوال: خواندن با قائده از فايل



para2x2
پنج شنبه 25 تیر 1388, 19:24 عصر
سلام بر تمام دوستان
راستش من قصد دارم ، اطلاعات مورد نياز در برنامم رو به جاي اينكه كاربر دستي وارد كنه ، از فايل ازش بگيرم (اطلاعات مورد نياز من يه ارايه دوبعديه )
حالا براي اينكه فايل من اينجوري باشه :

1,2,3,4,5,6
7,8,9,10,11,12
13,14,15,16,17,18,19

يه همچين كدي رو نوشتم


i=0;j=0;
for(i=0;i<rownum;i++){

token = strtok(arra[i], seps);

while (token)
{
strcpy(strArr[i], token);

token = strtok(NULL, seps);

i++;
}
for(j=0;j<num[i];j++)

data[i][j]=strArr[j];

}



ارروري كه دارم تويه اين خط هست :


data[i][j]=strArr[j];

و ميگه : Cannot convert char* to char:اشتباه:
راستي برا تيكه تيكه كردن از كدي كه دوستمون حسين محمدي گذاشته بود استفاده كردم
و همينطور من از توربو سي 3 هم براي زبون سي استفاده مي كنم
ممنون از همه دوستا

para2x2
پنج شنبه 25 تیر 1388, 19:36 عصر
ببخشيد من اين توضيح و يادم رفت بدم كه arra[i] هر خط از فايل هست كه قبلا خونده شده

kitten
پنج شنبه 25 تیر 1388, 19:36 عصر
سلام
امیدوارم که اشتباه ننوشته باشم چون تست نکردم
اگه اشتباه بود بگودرستش کنم

#include<fstream.h>
#include<iostream.h>
#include<string.h>
using namespace std;
int main() {
double a[300];
char *t1;
char b[100];
fstream mil("data.txt");
int i=0;
while(mil.getline(b,99)) {
for(strtok(t1,b);NULL!=strtok(t1,b);strtok(t1," ") {
double[i]=atof(t1);
i++;
}
}
return 0;
}

para2x2
پنج شنبه 25 تیر 1388, 22:08 عصر
سلام
آقا دستتون درد نكنه احتمالا با اين الگوريتم زودي به جواب مي رسيم ولي متاسفانه رويه سيستم كلي اررور مي داد
از name space معلومه تو ويژوال استديو بوده
ميگم من كدم رو برا توربو سي مي خواما ولي حالا به جز اين يه سري اررور ديگه هم ميداد كه چون من با تابع هاي هدر iostream آشنا نبودم نمي دوسنتم مشكل چيه
ممنون ميشم يه راهنمايي ديگه بكنين

para2x2
پنج شنبه 25 تیر 1388, 23:48 عصر
سلام ميگم اين كد همونيه كه مشا نوشتين من يكم راسو ريسش كردم

#include<fstream.h>
#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<math.h>

int main() {
double a[300];
char *t1;
char b[100];
int i=0;
fstream mil("data.txt");
while(mil.getline(b,99)) {
for(strtok(t1,b);NULL!=strtok(t1,b);strtok(t1," ")) {
a[i]=atof(t1);
i++;
}
}
return 0;
}

الان ارروري كه ميده اينه كه ميگه :
Clould Not Find a match for fstream
به نظر مياد آرگوماناش كم هسن
راستي من هرچي م يگردم تو نت هيچ كس از اين تابع تويه C استفاده نكرده همه ‍++‍C بودن ، جريان چيه ؟

para2x2
جمعه 26 تیر 1388, 15:01 عصر
دوستان كسي نيس يه كمك به ما بكنه ؟؟؟

kitten
شنبه 27 تیر 1388, 19:11 عصر
ببين دوست عزيز براي fstream مي تونيم دو تا ارگومان تعريف كنيم اما يكيش هم كافيه در هر حال اين را امتحان كن

fstream mil("data.txt","b");
و مطمئن شو كه فايل data.txt در كنار برنامه ات وجود داره

para2x2
شنبه 27 تیر 1388, 22:00 عصر
بازم
Clould Not Find a match for fstream
يكي ميگفت تويه C نمي تونم استفاده كنم اين تابع ماله ++‍C

para2x2
شنبه 27 تیر 1388, 23:39 عصر
سلام
من بالاخره با كد طولاني زير به اون چيزي كه ميخواستم رسيدم
گذاشتم شايد ايده اي بشه برا بقيه تا بهينش كنن برا خودشون

#include <stdio.h>
#include <conio.h>
#include <string.h>
int main() {
FILE *file;
float numbers[400],data[40][40];
char arra[50][50],line[50];
int i,j,k=0,num[50]={0},rownum=0;
clrscr();

for(i=0; i<50; i++)
for(j=0; j<50; j++)
arra[i][j] = '\0';
i=0;
/*--------------------------------rikhtan etelaat to arraye-----------------------*/
file = fopen("data.txt", "r");
while(!feof(file)) {
/* loop through and store the numbers into the array */
fscanf(file, "%f,", &numbers[i]);
i++;
}
i=0;
fclose(file);
/*--------------------------------bar dasht moshakhasat arraye-----------------------*/
/*--------------------------------bar dasht moshakhasat arraye-----------------------*/
file = fopen("data.txt", "r");

while ( fgets ( line, sizeof line, file ) != NULL ) /* read a line */
{
strcpy(arra[i], line);
rownum++;
i++;
}


for(i=0;i<rownum;i++){
for(j=0;j<strlen(arra[i]);j++){
if (arra[i][j]==',')
num[i]++;
}
}
fclose(file);
/*--------------------------------/bar dasht moshakhasat arraye-----------------------*/

for(i=0;i<rownum;i++){
for (j=0;j<num[i];j++){
data[i][j]=numbers[k];
k++;
}
}



for(i=0;i<rownum;i++){
for (j=0;j<num[i];j++){

printf("%-1.2f \t",data[i][j]);
}
printf("\n");
}



getche();
return 0;
}

kitten
سه شنبه 30 تیر 1388, 10:13 صبح
بازم
Clould Not Find a match for fstream
يكي ميگفت تويه C نمي تونم استفاده كنم اين تابع ماله ++‍C
بله دوست عزیز این تابع برای سی پلاس پلاس هستش