入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

读取文件内容存到数组的具体代码实现

创建时间:2016-09-21 投稿人: 浏览次数:842












//********************************************************//

int edge_num = 1000;
int spec = 1000; //表示行数

char * topo[1000];  //将topo赋给buff

char ** const buff = topo;      //创建二位数组的形式    

char * filename = "skill.txt";

    FILE * fp = fopen(filename, "r");
    if (fp == NULL)
    {
        //PRINT("Fail to open file %s, %s. ", filename, strerror(errno));
        return 0;
    }


    char line[MAX_LINE_LEN + 2];
    unsigned int cnt = 0;
    while ((cnt < spec) && !feof(fp))
    {
        line[0] = 0;
        fgets(line, MAX_LINE_LEN + 2, fp);
        if (line[0] == 0)   continue;
        buff[cnt] = (char *)malloc(MAX_LINE_LEN + 2);
        strncpy(buff[cnt], line, MAX_LINE_LEN + 2 - 1);
        buff[cnt][102] = 0;
        cnt++;
    }


    fclose(fp);


//对topo进行操作,取出每一列的数据
char * delim = " ";  //以制定的格式进行列的分割
char *p = NULL; 
int ii = 0, jj = 0;
char buffer[1000];
int value = 0;
int DATA[1000][27] = {0};


for(ii=0; ii<edge_num; ii++) //对每一行进行操作
{
memcpy(buffer, topo[ii], strlen(topo[ii]));
p = strtok(buffer, delim);  //用到字符串的分割函数
//while(NULL != p)
p = strtok(NULL, delim);


while(*p != " ")    //需要分割的列书为4行
{
value = atoi(p);


if(value != 0)
{
DATA[ii][value-1] = 1;
}
p = strtok(NULL, delim);
}
}




///测试用例
//
/*
for(int aa = 0; aa<1000; aa++)
{
for(int bb=0; bb<20; bb++)
{
printf("%d ", DATA[aa][bb]);
}
printf(" ");
}
*/


//********************************************************//


写入文件操作:

FILE * fP;//
fP = fopen("Result.txt","w");//新建的文件放在d盘里面Result.txt

//printf("输出测试处理后的T: ");
for(int a=0;a<n;a++) //输出测试处理后的T
{
for(int b=0;b<k;b++)
{
fprintf(fP,"%d ",T[a][b]);
}
fprintf(fP," ",NULL);
}


fclose(fP);


读取单列数据的方法:

//********************************************************//

int FileReader(char * file,double * a)
{
FILE * fp1 = fopen(file, "r");//打开输入文件
    if (fp1==NULL) {//若打开文件失败则退出
        puts("不能打开文件!");
        return 0;
    }
    for(int i=0;fscanf(fp1,"%lf",a+i)!=EOF;i++);//从输入文件连续读取整数到数组a
    fclose(fp1);//关闭输入文件
return 1;
}


总结 :

一般读取文件使用 fscanf函数  fgets函数

一般输出文件使用  fprintf函数








//********************************************************//

int edge_num = 1000;
int spec = 1000; //表示行数
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。