2012年4月9日月曜日

開発環境

『実践プログラミング 第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 コメント:

コメントを投稿