C语言实践:读取文件内容每两个字符间隔插入一个空格

在进行一个C语言编程实践操作中,设计编程情景如下:读取指定文件内容存放字符数组中并且在每两个字符间隔插入一个空格然后输出在一个新建文件。

解决问题的关键:插入空格的规律是一个首项为2方差为3的等差数列。

需要注意的是插入空格会导致原有的数组序列改变,每次循环赋值需要考虑是插入空格还是真实的数据。

插入空格后再插入第一个真实数据需要注意避免与第二个真实数据的位置因循环计数设计导致的冲突。

代码实现如下:

// test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{

unsigned int i,j,datalen,times,k=0,m=0,n=0;
FILE *fpsrc;
FILE *fptag;
char readbuf[1000],*readbufptr=readbuf,writebuf[1000],*writebufptr=writebuf;
//gets(readbuf);
fpsrc=fopen("E:\\read.txt","r");//read a txt
printf("读取的字符串:\n");
//fscanf(fpsrc,"%s",readbuf);
    while(fgets(readbuf,1024,fpsrc)!=0)    /*从文件中读取字符串并存放到字符数组str中,测试是否已读完*/
    {
		printf("%s",readbuf);        /*把数组str中的字符串输出到屏幕上*/   
	}
	printf("\n");        /*换行*/
fclose(fpsrc);

for(i=0;*(readbuf+i);i++)
{
	datalen=i;//读取的字符长度,从0开始
}
printf("%d",datalen);
printf("\n");
for(i=0,j=0,m=0,times=1,n=0;i<=datalen*2;i++)
{
    //在原始数据序列中每隔两个字符插入空格是一个等差数列
    if(i==(2+3*(times-1)))
	{
		times++;
		j++;//空格数
		m=i;
		*(writebufptr+m)=' ';
	}
	else 
	{
		n++;//真实原始数据被赋值次数
    //写入数组需要增加插入的空格数,因为空格改写了数据的原始顺序
		*(writebufptr+n+j-1)=*(readbufptr+n-1);
	}
}
printf("%s",writebuf); 
printf("\n");
fptag=fopen("E:\\write.txt","w");//write a txt
if(fptag==0)
{
	printf("cannot open file\n");
	exit(0);
}
else
    {
        fputs(writebuf,fptag);
        //fputs("\n",fptag);    /*在文件中加入换行符作为字符串分隔符*/
}
fclose(fptag);

}



本程序涉及到c语言的相关知识

1.fopen文件操作

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值