2012年6月19日火曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) II部(単純なプログラミング)の9章(変数スコープおよび関数)9.3(パラメータをとらない関数)設問9-1を解いてみる。

設問9-1.

return文がforループのブロックに含まれてるから。(セミコロン、あるいは中括弧が抜けてる。)

修正

セミコロン追加バージョン

コード(TextWrangler)

#include <stdio.h>
int length(char string[]){
  int index;
  for(index = 0; string[index] != '\0'; ++index);
  return (index);
}

int main(){
  char line[100];
  while(1){
    printf("Enter line:");
    fgets(line,sizeof(line),stdin);
    printf("Length (including newline) is: %d\n",
      length(line));
  }
  return (0);
}

中括弧追加バージョン

コード(TextWrangler)

#include <stdio.h>
int length(char string[]){
  int index;
  for(index = 0; string[index] != '\0'; ++index){
    /* 何もしない */
  }
  return (index);
}

int main(){
  char line[100];
  while(1){
    printf("Enter line:");
    fgets(line,sizeof(line),stdin);
    printf("Length (including newline) is: %d\n",
      length(line));
  }
  return (0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
Enter line:kamimura
Length (including newline) is: 9
Enter line:12345
Length (including newline) is: 6
Enter line:^C
$ cc -g -o sample sample.c
$ ./sample
Enter line:kamimura
Length (including newline) is: 9
Enter line:12345
Length (including newline) is: 6
Enter line:^C
$

0 コメント:

コメントを投稿