练习1-16 修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多地打印文本。
代码如下:
#include <stdio.h> // 包含标准库的信息。 #define MAXLINE 10 int getline(char line[], int maxline); int main() // 定义名为main的函数,它不接受参数值。 { int len; int max; char line[MAXLINE]; while ((max = getline(line, MAXLINE)) > 0) { printf("输入的行的字符数为:%d。内容是%s\n", max, line); } printf("程序结束。"); getchar(); // 防止控制台一闪而过,需要接受任意字符后在关闭控制台。 return 0; // 向执行环境返回一个整形,0代表执行成功。 } int getline(char s[], int lim) { int c, i, j; j = 0; for (i = 0; (c = getchar()) != EOF && c != ‘\n‘; ++i) { if (i <= lim - 2) // 如果数组还剩下一个就装满了,则不在将字符放入数组。 s[i] = c; ++j; // 但行字符计数器仍然+1。 } if(j > lim) s[lim - 1] = ‘\0‘; // 如果输入的字符长度大于数组长度,则数组最后一位写入‘\0‘。 else s[i + 1] = ‘\0‘; // 否则将有效字符后写入‘\0‘。 return j; }
个人理解:
练习的主要目的是对char类型数组中有效位后的‘\0‘的理解。
时间: 2024-10-13 21:18:14