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,这样就能在每行储存目标行。但是这样写的时候会出现乱码。我不清楚原因。只是把两维下标对调,问题就解决。