開発環境
- OS X Lion - Apple (UNIX) (OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- C (プログラミング言語)
- Clang (コンパイラ)
C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の9章(変数スコープおよび関数)、9.4(構造かプログラミング)、9.5(再帰)、9.7(プログラミング実習)、実習 9-1を解いてみる。
その他参考書籍
- プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)
- プログラミング言語Cアンサー・ブック 第2版 (クロビス・L.トンド、スコット・E.ギンペル(著)、矢吹 道郎(翻訳))
実習 9-1.
コード
sample.c
#include <stdio.h> #include <string.h> /* * countWords -- 文字列中の「語」数を数える関数 * 語: 1文字以上の英数字からなる単語 * パラメータ * string -- 文字列 * 戻り値 * 「語」数 */ int main() { int countWords(char s[]); char line1[100]; char line2[100]; char line3[100]; char line4[100]; char line5[100]; strcpy(line1, "Hello, World!"); strcpy(line2, ""); strcpy(line3, "a 1"); strcpy(line4, " bc\n\t"); strcpy(line5, "e"); printf("%s: 語数 %d\n", line1, countWords(line1)); printf("%s: 語数 %d\n", line2, countWords(line2)); printf("%s: 語数 %d\n", line3, countWords(line3)); printf("%s: 語数 %d\n", line4, countWords(line4)); printf("%s: 語数 %d\n", line5, countWords(line5)); return (0); } int countWords(char s[]) { int count = 0; int i = 0; int flag = 0; while (s[i] != '\0'){ if (('A' <= s[i] && s[i] <= 'Z') || ('a' <= s[i] && s[i] <= 'z') || ('0' <= s[i] && s[i] <= '9')){ if (flag == 0){ flag = 1; count += 1; } } else { flag = 0; } i += 1; } return (count); }
makefile
CC=cc CFLAGS=-g sample: sample.c $(CC) $(CFLAGS) -o sample sample.c clean: rm -f sample
入出力結果(Terminal)
$ make cc -g -o sample sample.c $ ./sample Hello, World!: 語数 2 : 語数 0 a 1: 語数 2 bc : 語数 1 e: 語数 1 $
0 コメント:
コメントを投稿