弄了几篇英语文章,想要在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);
}