请问怎样用C写代码把文本中由空格隔开的数据换成逗号隔开,并在每个数据上加双引号。跪求解答!!

比如我有两行数据102030405060708090100希望转换成“10”,“20”,“30”,“40”,"50"“60”,“70”,“80”,“90”,"100"跪谢... 比如我有两行数据
10 20 30 40 50
60 70 80 90 100
希望转换成
“10”,“20”,“30”,“40”,"50"
“60”,“70”,“80”,“90”,"100"
跪谢!!
展开
 我来答
a763286532
2014-03-06 · 超过10用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:15.6万
展开全部

#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;

}


已测试,保证可用,给个赞吧

Rankabc
2014-03-06 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1074万
展开全部
#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;
}
追问
你好,贵程序输出结果和原程序输出格式不同,没有换行,而是一股脑地整行输出。请问还有改进方法吗?
追答

有换行呀,你再测试一遍



已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
2014-03-06 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3771万
展开全部
#include<stdio.h>
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]);
这个程序会读取输入文件的每一行进行处理,直到文件结束,只是需要知道每行有几个数据,没有缓存所有数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式