開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料、light版)
- 言語: C
- コンパイラ: UNIX ccコンパイラ (汎用UNIX)
『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) の9章(変数スコープおよび関数)9.3(パラメータをとらない関数)設問9-1を解いてみる。
設問9-1.
return文がfor文のブロック内とみなされて、カウンター変数が0でreturn文が実行されてしまうから。
for文の括弧のあとにccontinue文、セミコロンを記述するか、なにもしない空のブロックを中括弧で記述すれば解決する。
修正したコード
コード(TextWrangler)
#include <stdio.h> int length(char string[]){ int index; for(index = 0; string[index] != '\0'; ++index){ } return (index); // 改行文字「\n」を文字数に含めない場合はindex - 1 } int main(){ char line[100]; while(1){ printf("Enter line:"); fgets(line,sizeof(line),stdin); if(line[0] == 'q'){ break; } printf("Length (including newline) is: %d\n",length(line)); } return (0); }
入出力結果(Terminal)
$ cc -g -o sample sample.c $ ./sample Enter line:ab Length (including newline) is: 3 Enter line:abcde Length (including newline) is: 6 Enter line:12345 Length (including newline) is: 6 Enter line: Length (including newline) is: 1 Enter line:q $
0 コメント:
コメントを投稿