removeLineEndSpace

简介: 1 /****************************************************************************** 2 * removeLineEndSpace 3 * 声明: 4 * 该程序是之前alignBySpace的逆向补充程序,去掉行尾的空格。
 1 /******************************************************************************
 2  *                          removeLineEndSpace
 3  *  声明:
 4  *      该程序是之前alignBySpace的逆向补充程序,去掉行尾的空格。
 5  *      
 6  *                                   2015-8-11 阵雨 深圳 南山平山村 曾剑锋
 7  *****************************************************************************/
 8 #include <stdio.h>
 9 #include <string.h>
10 #include <stdlib.h>
11 
12 int main ( int argc, char ** argv ) {
13 
14     int    ret                      = 0;
15     char  *tempFile                 = "generateFile.txt";
16     char  *readBuffer               = NULL;
17     size_t bufferSize               = 512;
18     int    readBufferIndex          = 0;
19 
20     if (  argc != 2  ) {
21         printf ( "USAGE:\n" );
22         printf ( "   removeLineEndSpace <file>.\n" );
23         return -1;
24     }
25 
26     FILE *readfile  = fopen ( argv[1], "r" );                         // only read
27     FILE *writefile = fopen ( tempFile, "w" );                        // only write
28 
29     /**
30      * man datasheet:
31      *    If *lineptr is NULL, then getline() will allocate a buffer for storing the line, 
32      *    which should be freed by the user program. (In this case, the value in *n is ignored.)
33      */
34     while ( ( ret = getline( &readBuffer, &bufferSize, readfile ) ) != -1 ) {
35 
36         readBufferIndex  = ret - 1; // index for real position
37 
38         while ( ( readBuffer [ readBufferIndex ] == ' ' ) ||          // del ' ', '\t', '\n' character
39                 ( readBuffer [ readBufferIndex ] == '\n' ) || ( readBuffer [ readBufferIndex ] == '\t' ) )  
40             readBuffer [ readBufferIndex-- ] = '\0';
41         
42         readBuffer [ readBufferIndex + 1 ] = '\n';
43 
44         fputs ( readBuffer, writefile );                              // write to file 
45 
46         bzero ( readBuffer,  ret );                                   // clean buffer
47     }
48 
49     free ( readBuffer );                                              // referrence getline()
50 
51     fclose ( readfile );
52     fclose ( writefile );
53 
54     remove ( argv[1] );                                               // delete source file
55     rename ( tempFile, argv[1] );                                     // tempfile rename to source file
56 }

 

目录
相关文章
|
Kubernetes Nacos 数据中心
k8s(9)Namespace(命名空间)
Namespace(命名空间)
280 0
|
7月前
|
C++
c++中的using namespace std;
c++中的using namespace std;
187 1
|
安全 C++
【C++】从认识using namespace std开始进入C++的学习
【C++】从认识using namespace std开始进入C++的学习
77 0
|
算法 编译器 C语言
C++ | 你真的了解namespace吗?
C++ | 你真的了解namespace吗?
59 0
|
前端开发 容器
什么是space-around
什么是space-around
273 0
|
Kubernetes 容器
k8s的Namespace详解
k8s的Namespace详解
184 0
|
编译器 程序员 C++
【C++】--- namespace命名空间
【C++】--- namespace命名空间
84 0
|
数据可视化 Java
CiteSpace的安装
CiteSpace的安装
276 0
|
C语言 C++
详解C++中的命名空间(namespace)
详解C++中的命名空间(namespace)
351 0
|
Kubernetes 调度 数据中心
K8S 集群 NameSpace(命名空间)_NameSpace 介绍及查看 | 学习笔记
快速学习 K8S 集群 NameSpace(命名空间)_NameSpace 介绍及查看
1114 0
K8S 集群 NameSpace(命名空间)_NameSpace 介绍及查看 | 学习笔记