練習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'的理解。