C语言 把text.txt文件中的连续多空格变成一个空格

2024-12-13 15:57:09
推荐回答(4个)
回答1:

下面的程序可以完成要求,并没有考虑运行效率优化!

#include

int main()
{
FILE *fin ,*fout;
int j, beg_space = 1; /* 设定空格开始 */
char gc, gc2;
char str[80];

if((fin=fopen("text.txt","r"))==NULL)
{
printf("cannot open file\n");
return 1;
}

if((fout=fopen("output.txt","w"))==NULL)
{
printf("cannot open file\n");
return 2;
}
while((gc=fgetc(fin))!=EOF)
{
if(gc == ' ')
{
if(beg_space) continue;
else
{
fputc(gc, fout);
beg_space = 1;
}
}
else
{
beg_space = 0;
fputc(gc,fout);
/* 检查china */
j = 1;
if(gc == 'c')
{
str[0] = 'c';
while(1)
{
str[j] = fgetc(fin);
if(str[j] == ' ')
{
str[j] = '\0';
break;
}
++j;
}
if(j != 5) /* 5是china的长度 */
{
fputs(str, fout);
}
else
{
/* 短路算法:首先比较最后一个字符,相等后再比较其它 */
if((str[4] == 'a') && (str[1] == 'h') && (str[2] == 'i') && (str[3] == 'n'))
{
fputs("chhiinnaa", fout);
}
else
{
/* 对应c打头的字符已经输入了,故移动指针到下一个字符 */
fputs(str+1, fout);
}
}
fputc(' ', fout);
beg_space = 1;
}

}
}
fclose(fin);
fclose(fout);
return 0;
}

回答2:

1、先trim一下去掉前后的空格,然后将--替换为-,循环直到找不到--。
2、china逐字读出来然后再double的写进去咯。或者把a替换成aa这样的,但是不能递归。
代码自己写吧,自己写印象深刻,呵呵。

回答3:

1.如果用的是托管C可这样做
String^ 源=...
String^ 结果;
array^ S=源->Split(gcnew array
{' '},
System::StringSplitOptions::RemoveEmptyEntries);
for each(String^ SU in S)结果+=SU+" ";
2.int I;
array^ 源=...
array^ 结果=gcnew array(源->Length*2);
for(I=0;I<结果->Length;I++)结果[I]=源[I/2];

回答4:

1.用split函数隔开,依次放到队列里面
2.把队列里面的数据重新用“-”这个组合起来