/*******************************************************************
* 空格填充器(alignBySpace)
* 声明:
* 1. 软件主要是在不改变文本文件内容情况下,自动填充空格一定数量的
* 空格,达到空格右对齐的功能;
* 2. 本软件主要是节省个人的代码跟踪文档打空格的时间;
*
* 2015-8-3 晴 深圳 南山平山村 曾剑锋
******************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h> int main ( int argc, char ** argv ) { int ret = ;
int column = ;
char *tempFile = "generateFile.txt";
char *readBuffer = NULL;
size_t bufferSize = ;
int readBufferIndex = ;
int writeBufferIndex = ;
char writeBuffer[bufferSize]; if ( ( argc < ) || ( argc > ) ) {
printf ( "USAGE:\n" );
printf ( " alignBySpace <file> [column].\n" );
return -;
} if ( argc == ) {
printf ( "\nUse default columns: 80. \n\n" );
column = ;
} else
column = atoi ( argv[] ); FILE *readfile = fopen ( argv[], "r" ); // only read
FILE *writefile = fopen ( tempFile, "w" ); // only write /**
* man datasheet:
* If *lineptr is NULL, then getline() will allocate a buffer for storing the line,
* which should be freed by the user program. (In this case, the value in *n is ignored.)
*/
while ( ( ret = getline( &readBuffer, &bufferSize, readfile ) ) != - ) { readBufferIndex = ;
writeBufferIndex = ; while ( readBufferIndex < ret ) {
if ( readBuffer [ readBufferIndex ] != '\t' ) // kick out '\t'
writeBuffer [ writeBufferIndex++ ] = readBuffer [ readBufferIndex++ ];
else {
memset ( writeBuffer + writeBufferIndex, ' ', ); // every tab key was 4 space
writeBufferIndex += ;
readBufferIndex++;
}
} writeBufferIndex--; // back to real index if ( ( column - writeBufferIndex ) > ) { // may be real column longer than we set
// '\n' at end of a line, need to kick it out
memset ( writeBuffer + writeBufferIndex, ' ', column - writeBufferIndex );
writeBuffer [ column ] = '\n'; // for end of a line
writeBuffer [ column + ] = '\0'; // for end of a string
} else
writeBuffer [ writeBufferIndex + ] = '\0'; // make sure end of a string fputs ( writeBuffer, writefile ); // write to file bzero ( readBuffer, bufferSize ); // clean buffer
bzero ( writeBuffer, bufferSize ); } free ( readBuffer ); // referrence getline() fclose ( readfile );
fclose ( writefile ); remove ( argv[] ); // delete source file
rename ( tempFile, argv[] ); // tempfile rename to source file
}

空格填充器(alignBySpace)的更多相关文章

  1. laravel 填充器Seed

    我们在进行多人开发时,发现运行php artisan db:seed --class=填充器名称 发现有报错 Exception trace: 1 ReflectionClass::__constru ...

  2. Android数据填充器LayoutInflater

    LayoutInflater类在应用程序中比较实用,可以叫布局填充器,也可以成为打气筒,意思就是将布局文件填充到自己想要的位置,LayoutInflater是用来找res/layout/下的xml布局 ...

  3. Android LayoutInflater布局填充器

    Android LayoutInflater布局填充器 把一份xml布局文件转为View对象,这就是layoutinflater的作用. 对于一个没有被载入或者想要动态载入的界面,都需要使用Layou ...

  4. Android LayoutInflater(布局填充器)

    先来看一下LayoutInflater的基本用法吧,它的用法非常简单,首先需要获取到LayoutInflater的实例,有两种方法可以获取到,第一种写法如下: LayoutInflater layou ...

  5. SQL Server 2008 R2【SET ANSI_PADDING填充属性】插入一条数据后,为何每一列都默认的在字符后多了几个空格

    当加入空格后查出 解决: 导致出现这样的现象的原因就是SET ANSI_PADDING选项. 这个选项只在数据表的字符串字段被更新或者新的数据行插入到表中的时候作用.它控制着SQL Server在遇到 ...

  6. lucene分词器与搜索

    一.分词器 lucene针对不同的语言和虚伪提供了许多分词器,我们可以针对应用的不同的需求使用不同的分词器进行分词.我们需要注意的是在创建索引时使用的分词器与搜索时使用的分词器要保持一致.否则搜索的结 ...

  7. laravel 数据填充

    编写填充器 php artisan make:seeder UserTableSeeder 修改Laravel安装时自带的DatabaseSeeder类,添加一个数据库插入语句到run方法: < ...

  8. Laravel 5.2 教程 - 数据填充

    一.简介 Laravel提供的填充类(seed),可以让大家很容易的实现填充测试数据到数据库.所有的填充类都位于database/seeds目录.填充类的类名完全由你自定义,但最好还是遵循一定的规则, ...

  9. Laravel 5.2数据库--填充数据

    1.简介 Laravel 包含了一个简单方法来填充数据库——使用填充类和测试数据.所有的填充类都位于database/seeds目录.填充类的类名完全由你自定义,但最好还是遵循一定的规则,比如可读性, ...

随机推荐

  1. quality center 支持的平台

  2. 转载:RESTful API 设计指南

    http://www.ruanyifeng.com/blog/2014/05/restful_api.html 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板. ...

  3. ubuntu下xx-net可用IP为0, ping6显示 Network is unreachable

    不知和xx-net有没有关系. 全新安装系统 sudo apt-get install miredo 这时, ping6 ipv6.google.com 是能ping通的 按github上依次安装py ...

  4. Codeforces 595C - Warrior and Archer

    595C - Warrior and Archer 思路:设最后答案的区间为[l,r],那么r-l等于n/2,因为在(l,r)中的点都是其中一个人挖掉的,[0,l)和(r,n]中的点是另一个人挖掉的, ...

  5. 修改unity变量名但不丢失序列化值

    using UnityEngine; using UnityEngine.Serialization; public class LgsTest : MonoBehaviour { [Formerly ...

  6. 为用户管理连接 Confluence 6 到 Jira 应用程序

    请注意,在使用这个功能的时候,你的 Jira 应用许可证数量和 Confluence 的许可证数量不需要完全等同.例如,你可以通过 Jira 管理一个 50 个用户的 Confluence 许可证,尽 ...

  7. ccf数字排序

    问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输入格式 输入的第一行包含一个整数n,表示给定数字的个数. 第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所 ...

  8. Logger.getLogger()和LogFactory.getLog()的区别

    第一.Logger.getLogger()和LogFactory.getLog()的区别 1.Logger.getLogger()是使用log4j的方式记录日志: 2.LogFactory.getLo ...

  9. 导出cnblogs文章

    导出cnblogs文章 网址  http://download.csdn.net/download/zlj1817/9001869 下载

  10. bat批处理文件运行时隐藏cmd窗口

    想让bat运行时隐藏cmd窗口,最好的方法是使用vbs文件实现, 1.新建一个文本文档,改名为123.vbs,编辑内容: set ws=WScript.CreateObject("WScri ...