01|201|1|0
01|201|1|1000
01|21|1|100
01|12|2|300
01|1219|1|100
01|21220|2|100
这样的txt数据输入到二维数组中
#include <stdio.h>
int main(int argc,char** argv)
{
int a[6][4];
int i,j;
FILE* fp=fopen("文件名.txt","r"); //打开文件
if(fp==NULL)
{
printf("无文件");
return -1;
}
for(i=0;i<6;i++)
{
for(j=0;j<3;j++)
{
fscanf(fp,"%d|",&a[i][j]);/*每次读取一个数,fscanf函数遇到空格或者换行结束*/
}
fscanf(fp,"%d",&a[i][3]);
fscanf(fp,"\n");
}
fclose(fp);
for(i=0;i<6;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a[i][j]);//输出
}
printf("\n");
}
return 0;
}
#include
#include
#include
#define DATABUF_LISTS (5)//二维数组列数
#define DATABUF_LENS (10)//二维数组行数
#define BUF_SIZE (200)
int data_buf[DATABUF_LENS][DATABUF_LENS];//二维数组
int main(int argc,char** argv)
{
char buf[BUF_SIZE] = {0};
int read_len = 0;
int list = 0;
int line = 0;
FILE* fp=fopen("./file_name.txt","r"); //打开文件
if(fp==NULL)
{
printf("open file failed \n");
return -1;
}
char *P = NULL;
while(fgets(buf,BUF_SIZE,fp) != NULL)//从文件中读取一行
{
char *delim = "|";//分割符
P = strtok(buf, delim);
if(P == NULL)
{
printf("con't find ‘|’");
return -1;
}
data_buf[line][list] = atoi(P);//以delim为分界拆分字符串并将其转换为整形
list++;
if(list == DATABUF_LISTS)
{
line++;
list = 0;
}
while((P = strtok(NULL, delim)) != NULL)
{
data_buf[line][list] = atoi(P);
list++;
if(list == DATABUF_LISTS)
{
line++;
list = 0;
}
if(line >= DATABUF_LENS)
{
printf("数据太多,数组放不下\n");
}
}
}
printf("**************the data is %d *************\n",line);
int i = 0;
int j = 0;
for(i = 0;i < line;i++)
{
for(j = 0;j < DATABUF_LISTS;j++)
{
printf("%-8d ",data_buf[i][j]);
}
printf("\n");
}
/***打印最后一行数据****/
for(j = 0;j < list;j++)
{
printf("%-8d ",data_buf[line][j]);
}
printf("\n");
printf("***************my name is lzy*********************\n");
return 0;
}
文件示例
运行结果