请问怎样用C写代码把文本中由空格隔开的数据换成逗号隔开,并在每个数据上加双引号。跪求解答!!
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;
}
已测试,保证可用,给个赞吧
#include <stdio.h>
int main()
{
FILE *fp,*fp1;
int n;
char c;
fp=fopen("test.txt","r");
if(fp==NULL)return 1;
fp1=fopen("new.txt","w");
while(1)
{
fscanf(fp,"%d",&n); //逐个读取整形,好处是每行数据个数可以不同
fprintf(fp1,"\"%d\"",n); //加双引号
c=fgetc(fp);
if(c==EOF)break;
else if(c!='\n')fputc(',',fp1);
else fputc('\n',fp1);
}
fcloseall();
return 0;
}
void main()
{ FILE *fp,*tp;
char buffer[256];
int a[5]; //每行5个数据
if ( fp=fopen("data.txt","r") )
{ if ( tp=fopen("newdata.txt","r") )
{ while ( !feof(fp) )
{ fgets(buffer,256,fp);
sscanf(buffer,"%d %d %d %d %d",a,a+1,a+2,a+3,a+4); //这两句也可以搞个循环
sprintf(buffer,"%d,%d,%d,%d,%d\n",a[0],a[1],a[2],a[3],a[4]); //找空格替换成逗号
fputs(buffer,tp);
}
fclose(tp);
}
fclose(fp);
}
}
你好,因为数据文件是其它程序自动生成,行数末知,循环不太可行。不过我事先没有讲清楚,不好意思,另外好像输出结果没有加引号。有改进方法吗?
引号忘加了,输出那句改成下面即可:
sprintf(buffer,"\"%d\",\"%d\",\"%d\",\"%d\",\"%d\"\n",a[0],a[1],a[2],a[3],a[4]);
这个程序会读取输入文件的每一行进行处理,直到文件结束,只是需要知道每行有几个数据,没有缓存所有数据。