您的位置:首页 > 其它

练习 1-22 自动折行程序

2012-11-12 21:40 120 查看
/**************************************************************************
类型:<c程序设计语言(第二版.新版)> 练习 1-22
名称:lx.c
author: wubenzhimu
data:   2012.11
功能:编写一个程序,把较长的输入行“折”成短一些的两行或多行,折行的
位置在输入行的第n列之前的最后一个非空格之后。要保证程序能够智能地处理
输入行很长以及在指定的列前边没有空格或制表符时的情况。
***************************************************************************/

#include <stdio.h>

#define MAXLINE 1000
#define TRUELENGTH 10            /* 超过这个长度折行 */

int getLine ( char charArr[] );
void copy ( char charArr[], char toArr[], int length );

int main ()
{
int putLength = 0;                /* 输入数组的长度 */
char charArr[MAXLINE] = { 0 };
char toArr[MAXLINE] = { 0 };

putLength = getLine ( charArr );
if ( putLength > 0 )
{
copy ( charArr, toArr, putLength );
}
printf("%s", toArr);
return 0;
}

/* 把输入的字符串保存到数组中 */

int getLine ( char charArr[] )
{
int c, i = 0;

while ( (c=getchar()) != EOF )
{
charArr[i] = c;
i++;
}
charArr[i] = '\n';
charArr[++i] = '\0';
return i;
}

/* 复制指定长度的数组并符合添加的加'\n' */

void copy ( char charArr[], char toArr[], int length )
{
int i = 0, j = 0, t = 0;

while ( i <= length )
{

if ( t == TRUELENGTH )
{
while (  charArr[i]=='\b' || charArr[i]==' ' )
{
i++;
}
toArr[j] = '\n';
t = 0;
}
else
{
if ( t == 1)
{
while ( charArr[i]=='\b' || charArr[i]==' ' )
{
i++;
}
}
toArr[j] = charArr[i];
}
i++;
j++;
t++;
}
}


输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: