|
おはようございます。
>一行60文字で英文書かれているのですが、このままでは英単語の中に
>改行が入り読みにくいのです。読みやすくするc言語を教えてくれませんか。
>英単語を分割しないように60文字以内で改行する。
>あるいは文末ピリオドが現れると改行するプログラムなんですけど。
さっくりと作ったので条件が漏れているかもしれませんが・・・。
おかしかったら指摘してください。
#include <stdio.h>
#include <string.h>
int main(void)
{
int c, i;
char buf[256], *p;
i = 0;
while ((c = getchar()) != EOF) {
/* 最初がスペースと改行除く */
if (!(i==0 && c==' ') && c!='\n') {
buf[i++] = c;
}
/* .で表示 */
if (c == '.') {
buf[i] = '\0';
puts(buf);
i = 0;
}
/* 60文字以上で表示 */
else if (i >= 60) {
/* 後ろからスペースを探す */
p = strrchr(buf, ' ');
/* スペースの位置に'\0'を挿入 */
*p = '\0';
puts(buf);
/* 残りの文字を先頭に */
strcpy(buf,p+1);
i = strlen(buf);
}
}
/* 最終行を表示 */
buf[i] = '\0';
puts(buf);
return( 0 );
}
使い方は
実行ファイル名 < テキストファイル名
で、画面に整形テキストを表示します。
|