您的位置:首页 > 其它

输出大于80字符数的行

2010-07-14 22:53 225 查看
#include <stdio.h>

#define MAX_LENGTH  1000
#define CONDITION  80

int line_length (char string[]); //  返回输入行的长度
int copy_line (char object[][MAX_LENGTH], char string[], int count);      //  长度大于80的行就拷贝它

int main (void)
{
int c, length, count, i;
char string[MAX_LENGTH];
char object[MAX_LENGTH][MAX_LENGTH];

count = 0;
while ((length = line_length(string)) > 0)
if (length > CONDITION)
count = copy_line(object, string, count);
for (i = 0; i < count; i++)
printf ("%s", object[i]);
return 0;
}

int line_length(char string[])
{
int i, c;

for (i = 0; i < MAX_LENGTH - 1 && (c = getchar()) != EOF && c != '/n'; ++i)
string[i] = c;
if (c == '/n')
{
string[i] = c;
++i;
string[i] = '/0';
}
return i;
}

int copy_line(char object[][MAX_LENGTH], char string[], int count)
{
int i = 0;

if (count < MAX_LENGTH)
while ((object[count][i] = string[i]) != '/0')
++i;
return (++count);
}


这是我的代码:和答案的不同之处在于我的是在用户结束输入以后打印所有大于80的行,而他的则是只要有输入的行大于80就输出。关键是我把问题理解错了....

书上答案:

#include <stdio.h>

#define MAXLINE     1000
#define LONGLINE    80

int getline(char line[], int maxline);

int main(void)
{
int len;
char line[MAXLINE];

while ((len = getline(line, MAXLINE)) > 0)
if (len > LONGLINE)
printf ("%s", line);
return 0;
}

int getline(char s[], int lim)
{
int c, i, j;

j = 0;
for (i = 0; i < lim - 1 && ((c = getchar()) != EOF) && c != '/n'; ++i)
s[i] = c;
if (c == '/n')
{
s[i] = c;
++i;
}
s[i] = '/0';
return i;
}


他的代码还是如此简洁明了,现在渐渐的懂C了。写程序现在还是懒得打注释,以后要多打,需要努力的就是熟悉代码的执行顺序等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐