能幫我解釋一下這個程序嗎?特別是我標注的幾個地方,看不懂
mrs_empress
2016-10-06 19:20:15
TA貢獻2條經(jīng)驗 獲得超2個贊
//望采納,嘻嘻 /*?這個程序是讀入一組文本行,并把最長的文本行打印出來?*/? #include?<stdio.h> #define?MAXLINE?1000 ? int?getline(char?line[],int?maxiline); void?copy(char?to[],char?from[]); /*?打印最長的輸入行?*/? main() { ????int?len;????????????????????/*?當前行長度??*/? ????int?max;???????????????????/*?目前為止發(fā)現(xiàn)的最長行的長度?*/? ????char?line[MAXLINE];???????/*?當前的輸入行?*/? ????char?longest[MAXLINE];???/*?用于保存最長的行?*/? /*?打印最長的輸入行??*/???? ????max?=?0; ????while?((len?=?getline(line,MAXLINE))?>?0) ????????if?(len?>?max){ ????????????max?=?len; ????????????copy(longest,line); ????????} ????if?(max?>?0)??????????/*?存在這樣的行??*/???????????//這里的if語句是為了判斷是否有輸入行,有則輸出最長的,沒有就return?0; ????????printf("%s",longest); ????return?0; } /*?getline函數(shù):將一行讀入到s中并返回其長度??*/? int?getline(char?s[],int?lim) { ????int??c,i; ????for?(i=0;?i<lim-1?&&?(c=getchar())!=EOF?&&?c!='\n';?++1)???//因為i是從0開始的,所以i最后到lim-1 ????????s[i]?=?c; ????if?(c?==?'\n'){??????????????????//前面不等于\n成立時只執(zhí)行s[i]?=?c;。后面的等于\n,不僅要執(zhí)行s[i]?=?c;?還要執(zhí)行++i; ???????s[i]?=?c;? ????????++i; ????}??? ????s[i]?=?'\0';????????????????????//在c語言中,字符是按其所對應的ASCII碼來存儲的,一個字符占一個字節(jié)。第一個ASCII碼,對是0,對應的字符是(Null),其實就是‘\0’,即空字符。可以通過如下ASCII碼表來查詢到。???? ????return?i;?????????? } /*?copy函數(shù):將from復制到to;這里假定to足夠大??*/? void?copy(char?to[],char?from[]) { ????int?i; ????? ????i=0; ????while?((to[i]?=?from[i])?!=?'\0') ????????++i; }
TA貢獻11條經(jīng)驗 獲得超2個贊
/*?這個程序是讀入一組文本行,并把最長的文本行打印出來?*/? #include?<stdio.h> #define?MAXLINE?1000 int?getline(char?line[],int?maxiline); void?copy(char?to[],char?from[]); /*?打印最長的輸入行?*/? main() { int?len;????????????????????/*?當前行長度??*/? int?max;???????????????????/*?目前為止發(fā)現(xiàn)的最長行的長度?*/? char?line[MAXLINE];???????/*?當前的輸入行?*/? char?longest[MAXLINE];???/*?用于保存最長的行?*/? /*?打印最長的輸入行??*/? max?=?0; while?((len?=?getline(line,MAXLINE))?>?0) if?(len?>?max){ max?=?len; copy(longest,line); } if?(max?>?0)??????????/*?存在這樣的行??*/???????????//這里的if語句有什么用,是為了排除'\0'的存在嗎? printf("%s",longest); return?0; } /*?getline函數(shù):將一行讀入到s中并返回其長度??*/? int?getline(char?s[],int?lim) { int??c,i; for?(i=0;?i<lim-1?&&?(c=getchar())!=EOF?&&?c!='\n';?++1)???//這里的lim-1是什么意思?且我用軟件編譯時提示錯誤,為什么?? s[i]?=?c; if?(c?==?'\n'){??????????????????//為什么前面不等于\n,現(xiàn)在要等于\n,做的事情不是都一樣嗎?? s[i]?=?c; ++i; } s[i]?=?'\0';????????????????????//為什么又把它變?yōu)?,那么賦值有什么作用呢?? return?i; } /*?copy函數(shù):將from復制到to;這里假定to足夠大??*/? void?copy(char?to[],char?from[]) { int?i; i=0; while?((to[i]?=?from[i])?!=?'\0') ++i; }
舉報