[C]文件定宽换行工具

2018-3-30 写技术

弄了几篇英语文章,想要在Linux下阅读,可是发现没有换行,每一段都是从左到右一整行,于是写下这个小工具,实现自动换行:

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

void main( int argc, char *argv[]){
	FILE *fp_in = 0;
	FILE *fp_out = 0;
	char str[1024]={0};
	char file_out[512]={0};
	int len = 0;
	int i = -1;
	int mark = 0;
	char *file_name = 0;
	int file_width = 0;

	if(argc<3){
		printf(" textwidth <filename> <width>\n");
	}

	file_name = argv[1];
	file_width = atoi(argv[2]);
	sprintf(file_out, "w%d_%s", file_width, file_name);

	fp_in = fopen(file_name, "r");
	fp_out = fopen(file_out, "w");
	str[++i] = ' ';
	str[++i] = ' ';
	while(str[++i] = fgetc(fp_in)){
		mark = 0;
		if( i>=1023){
			mark = -1;
		}
		if(str[i] == '\n' ){
			mark=-2;
		}
		if(str[i] == ' ' && i>file_width){
			str[++i] = '\n';
			mark=-1;
		}
		if(str[i] == EOF){
			str[i] = '\n';
			mark = -3;
		}

		if(mark<0){
			str[++i] = 0;
			i=-1;
			fprintf( fp_out, " %s", str);
		}
		if(mark == -2){
			str[++i] = ' ';
			str[++i] = ' ';	
		}
		if(mark == -3){
			break;
		}

	}

	fclose(fp_in);
	fclose(fp_out);
	
	printf(" Create file %s from %s as width %d\n", file_out, file_name, file_width);
	
}

标签: C

发表评论:

Powered by anycle 湘ICP备15001973号-1