isalphaとtolowerを使わずに作りたい。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nami

isalphaとtolowerを使わずに作りたい。

#1

投稿記事 by nami » 15年前

コマンド行引数に一つのファイル名を指定しそのファイルに現れる各英字(a~z及びA~Z)の出現頻度を表示するプログラムを作成しなさい。大文字と小文字の区別はしなくてよい。

これをつくりました。

#include<stdio.h>
#include<ctype.h>

int main(int argc, char *argv[/url])
{
FILE *fp;
int i, c, freq[26]={0};

if((fp=fopen(argv[1], "r"))==NULL){
printf("ファイル%sがオープンできません。\n",argv[1]);
return(1);
} else {
while ((c=fgetc(fp)) !=EOF)
if (isalpha(c))
freq[tolower(c) -'a']++;
fclose(fp);
}
for (i=0; i<26; i++)
printf("%c: %5d\n", 'a'+i, freq);

return(0);
}


これと同じ内容で, isalphaとtolowerを使わずに同じ結果のプログラムを作りたいなと思っているんですがどの子のプログラムを変えたらよいでしょうか?

non

Re:isalphaとtolowerを使わずに作りたい。

#2

投稿記事 by non » 15年前

はて?
どの子?って言われてもよくわからないけど・・・・
isalphaとtolowerを自作すればいいのではないですか?

たかぎ

Re:isalphaとtolowerを使わずに作りたい。

#3

投稿記事 by たかぎ » 15年前

処理系を特定しないのであれば...

> freq[tolower(c) -'a']++;

これはダメでしょう。
詳細は下記参照
http://www.kijineko.co.jp/tech/supersti ... uence.html

バグまで復元するとなると、tolowerを使わずには難しいですね。
toupperを使えば近い状態にはなると思いますが...

閉鎖

“C言語何でも質問掲示板” へ戻る