《C程序设计语言练习》1-17编写一个程序,打印长度大于80个字符的所有输入行

C程序设计语言练习

1-17编写一个程序,打印长度大于80个字符的所有输入行。

#include <stdio.h>

#define MAXLINE 1000
#define MAXCOL 100	/*最大列maxcolume*/
#define LIM 40

int getline (char line[]);
void copy (char to[], char from[]);

/*print all the input line that longer than 80 characters*/
main()
{
	char line [MAXLINE];
	char obj [MAXLINE] [MAXCOL];	/*用二维数组保存object line*/
	int len;
	int i;
	
	for (i = 0; (len = getline (line)) > 0; ++i)
		if (len > LIM)
			copy (obj [i], line);
	
	for (i = 0; i < MAXCOL; ++i)
		printf ("%s", obj [i]);
	return 0;
}

/*getline: read a line into s, return length.*/
/*只传递一个参数,就不考虑输入行字符的上限问题*/ 
int getline (char s[])
{
	int c, i;
	
	for (i = 0; (c = getchar()) != EOF && c != '\n'; ++i)
		s [i] = c;
	if (c == '\n'){
		s [i] = '\n';
		++i;
	}
	s [i] = '\0';
	return i;
}

/*copy: copy 'from' to 'to', assume to is big enough*/
void copy (char to[], char from[])
{
    int i;
    
    i = 0;
    while ((to [i] = from [i]) != '\0')
        ++i;
}

思路参考: https://blog.csdn.net/qq_35651829/article/details/121339064
但是我的代码有个问题。
我在声明 obj二维数组 时的思路是,第一维下标为最大列,定义的数值为100;第二维下标为最大行,定义的数值为1000,这样就能在每行储存目标行。但是这样写的时候会出现乱码。我不清楚原因。只是把两维下标对调,问题就解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值