最近有个需求,就是要把一个C++工程代码某个部分的数据变量数据采样出来一些,涉及到把大批量数据多次读到多个文件中。
(我还特意问了一个腾讯的后端同学大佬)这里不得不吐槽下C++,这么多年过去了,写数据还是只能一个一个往文件中写,哈哈哈,底层的基本操作永远都不过时。
正常的打开文件读写数据,用fopen,然后fprintf就可以了,不过,我这里有个小需求,就是要对文件进行有规律的命名,例如a_1.txt、a_2.txt、a_3.txt......等等。
这时就需要用到一个函数sprintf了,这个函数的作用主要就是:把你想要的控制变量传递到字符串中你规定的位置上,如下:
for(i=0;i<10;i++){
sprintf(fname,"./mmm/data_%d.txt",i); }
其中%d就是把整数i传到它所在的位置,最后再把整个字符串传递给fname,然后再用fopen打开即可,整段代码如下:
FILE *fp = NULL;
char fname[20];
for(i=0;i<10;i++){
sprintf(fname,"./mmm/data_%d.txt",i);
fp = fopen(fname,"w");
for(j=0;j<10;j++){
fprintf(fp,"%f ",arr[i][j]);
}
fclose(fp);
}