比如我有两行数据
10 20 30 40 50
60 70 80 90 100
希望转换成
“10”,“20”,“30”,“40”,"50"
“60”,“70”,“80”,“90”,"100"
跪谢!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp_test,*fp_test_new;
int data,i=0;
//以只读方式 打开要读取的文件
if((fp_test=fopen("test.txt","r"))==NULL)
{ //若打开文件出错,则输出提示信息,并退出
printf("\n open test.txt error! \n");
exit(1);
}
//以只写方式 打开存储转换数据文件;若不存在,则创建
if((fp_test_new=fopen("fp_test_new.txt","w+"))==NULL)
{ //若打开文件出错,则输出提示信息,并退出
printf("\n open fp_test_new.txt error");
exit(1);
}
//读取数据、转换数据、存储数据
while(!feof(fp_test)) //此处控制是否到文件结尾
{
if(0!=i)
fprintf(fp_test_new, ","); //加逗号
fscanf(fp_test,"%d",&data); //逐个读取数据,可以更灵活的处理文件里的数据
fprintf(fp_test_new,"\"%d\"",data); //加双引号
if(4==i)
fprintf(fp_test_new,"\n"); //加换行符
//fputs("\n",fp_test_new); //另一种加字符方式
i=(i+1)%5; //改变 I 的值
}
//关闭文件
fclose(fp_test);
fclose(fp_test_new);
return 0;
}
已测试,保证可用,给个赞吧
你好,贵程序输出结果和原程序输出格式不同,没有换行,而是一股脑地整行输出。请问还有改进方法吗?
追答有换行呀,你再测试一遍
你好,因为数据文件是其它程序自动生成,行数末知,循环不太可行。不过我事先没有讲清楚,不好意思,另外好像输出结果没有加引号。有改进方法吗?
追答引号忘加了,输出那句改成下面即可:
sprintf(buffer,"\"%d\",\"%d\",\"%d\",\"%d\",\"%d\"\n",a[0],a[1],a[2],a[3],a[4]);
这个程序会读取输入文件的每一行进行处理,直到文件结束,只是需要知道每行有几个数据,没有缓存所有数据。