The C Programming Language学習ノート
1520 ワード
Exercise 1-8
Write a program to count blanks, tabs, and newlines.
#include <stdio.h>
int main(void)
{
int blanks, tabs, newlines;
int c;
int done = 0;
int lastchar = 0;
blanks = 0;
tabs = 0;
newlines = 0;
while(done == 0)
{
c = getchar();
if(c == ' ')
++blanks;
if(c == '\t')
++tabs;
if(c == '
')
++newlines;
if(c == EOF)
{
if(lastchar != '
')
{
++newlines; /* this is a bit of a semantic stretch, but it copes
* with implementations where a text file might not
* end with a newline. Thanks to Jim Stad for pointing
* this out.
*/
}
done = 1;
}
lastchar = c;
}
printf("Blanks: %d
Tabs: %d
Lines: %d
", blanks, tabs, newlines);
return 0;
}
その中のlastchar!=''ファイルがnewlineで終わっていない場合は、この行もnewlinesに追加すべきだという意味です.しかしubuntu下の端末では、新しい行が起きなければctrl+D(windowsでctrl+zを使用)でEOFを入力することができず、「」で終わらないこともありません.しかしパイプで読めば、最後の行は「」で終わらない点でリンクを開くことができます.そのために「」を検討しましたが、具体的な研究結果はここ