当前位置: 代码迷 >> C语言 >> [求助]等待解决
  详细解决方案

[求助]等待解决

热度:240   发布时间:2006-12-31 15:38:05.0
[求助]等待解决

有一文本。
数字间以逗号分隔。每组数字为3位,不足3位用空格代替。
例如 ,165,45,3,1,333,85,6,74,1,635,355,156,354,33,3,33,311,
165,45,3,1,333,85,6,74,1,635,355,156,354,33,3,33,311,替换成

165,45 ,3 ,1 ,333,85 ,6 ,74 ,1 ,635,355,156,354,33 ,3 ,33 ,311,
165,45 ,3 ,1 ,333,85 ,6, 74 ,1 ,635,355,156,354,33 ,3, 33 ,311,

由于文件数据成千上万,手工敲空格等于自杀。所以请大家帮忙编个小程序。
本人是编程白痴请详细注明步骤。小弟感激不尽。
祝大家新年愉快,

在线等

搜索更多相关的解决方案: 自杀  数字  空格  

----------------解决方案--------------------------------------------------------

没人帮忙么。拉兄弟一把


----------------解决方案--------------------------------------------------------
帮忙顶一下

对文件操作吾也菜菜
----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp;
unsigned int i=0,j=0,k=0;
char ch=0,tmp[2000]="\0"; //这里的2000可以改大点
fp=fopen("temp.txt","r");
if(fp==NULL)
{
printf("can not open file.\n");
system("pause");
return 1;
}
/*首先把文件读到数组tmp中*/
while((ch=fgetc(fp))!=EOF) //读到文件末尾
{
tmp[i]=ch;
i++;
}
tmp[i]='\0';
i=0;
/*然后把数组内容写入文件中*/
fp=fopen("temp.txt","w");
while(tmp[i]!='\0')
{
if(tmp[i]!=',') //不是逗号,就直接写入
{
fputc(tmp[i],fp);
j++; //用j纪录从文件开头或者前一个逗号开始,
//又写入了几个符号,以便写入适当个数的空格
}
else{

if(j<3) { //j<3表示写入字符数不足3个,需要空格补
while(k<3-j){ //补上空格,个数是3-j
fputc(32,fp); //32是空格对应的ascii码
k++;
}
}
j=0; //j和k都要清零
k=0;
fputc(tmp[i],fp); //写入逗号
}
i++;
}

fclose(fp); //关闭文件
return 0;
}


这个程序在devc++下测试通过,如果在TC环境,需要把用“//”表示的注释行转换成“/**/”格式。VC环境下应该也可以通过。


----------------解决方案--------------------------------------------------------

兄弟VB下不行啊


----------------解决方案--------------------------------------------------------
以下是引用zhangqing42在2006-12-31 20:15:14的发言:

兄弟VB下不行啊

c语言程序你放到VB下干什么?
----------------解决方案--------------------------------------------------------

以下是引用zhangqing42在2006-12-31 20:15:14的发言:

兄弟VB下不行啊

你要用vb编?


----------------解决方案--------------------------------------------------------

#include <stdio.h>
#define m 1000
void main()
{
char stra[m],strb[4];
strb[0]=' ';
strb[1]=' ';
strb[2]=' ';
strb[3]='\0'; //建立两个字符串,strb[]=" \0"
int i,j,k=0;
gets(stra);
for(i=0;i<1000;i++)
{
if(stra[i]=='\0')
break;
}
for(j=0;j<i;j++)
{

if(stra[j]==',')
{
printf("%-3s,",strb);
k=0;
j++;
strb[0]=' ';
strb[1]=' ';
strb[2]=' ';
strb[3]='\0'; //重新让strb[]=" \0"
}
strb[k]=stra[j];
k++;

}
} //我只是菜鸟,想了挺久才想出这个来
//这个程序要求那个要改变的字符串必中每个数组中最多只有三个数字,
//并且每两个数组之间必须有逗号隔开,每个数组必须有数字,
//如果不满足以上的要求,结果就不正确了.


----------------解决方案--------------------------------------------------------
  相关解决方案