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