※ ChatGPTを利用し、要約された質問です(原文:コマンドライン引数を使った、英小文字個数のカウントについて(C))
C言語でコマンドライン引数を使用した英小文字個数のカウント
このQ&Aのポイント
C言語でコマンドライン引数を使用して英小文字個数のカウントを行う方法について解説します。
コマンドライン引数から与えられた文字列に含まれる英小文字の個数を、配列を使用してカウントする方法を紹介します。
C言語のプログラムを使って、コマンドライン引数から与えられた文字列に含まれる英小文字の個数を数えることができます。
コマンドライン引数を使った、英小文字個数のカウントについて(C)
はじめまして。
勉強中の初心者です。
数時間前に同じ様な質問をさせて頂いたのですが、間違えて締め切ってしまいました。
同じ質問が続いて申し訳ないです。
#include <stdio.h>
int main(int argc, char *argv[])
{
char countmoji;
int count[26], i;
if ((argc == 1)||(argc > 2)) {
printf("Usage : ALFSCH <strring>\n\n");
exit(0);
}
for (countmoji = 0x61; countmoji <= 0x7a; countmoji++) {
count[countmoji] = 0;
}
i=0;
while (argv[1][i] != '\0') {
countmoji = argv[1][i];
count[countmoji]++;
i++;
}
for(countmoji = 0x61; countmoji <= 0x7a;countmoji++) {
if (count[countmoji] >= 1) {
printf("%C :%4d \n", countmoji, count[countmoji]);
}
}
return 0;
}
上司からだされた練習用課題の一部です。
上記のソースで正確に動いてはいるんですが、上司から「中途半端なメモリの使い方をするな」と。
メモリの頭「0」から「25」までだけを使う様に、16進数をうまく使って
コーディングしてみなさいとのことで。。。
どう直したらよいのか困っております。
以上の内容を踏まえて、どの様なソースになるのかを見せて頂けたら幸いです。
範囲外アクセスで
int count[26] と宣言しておきながら
for(countmoji = 0x61; countmoji <= 0x7a;countmoji++)
はないというトコまではわかりました。
Linux Fedora Core 6を使用しております。
手持ちの入門書には記載がなく、ネットで調べてはいるもののわからずじまいで数日経ちます。
長々と申し訳ありません。よろしくお願いいたします。
お礼
感動しました。 ありがとうございます。 泣きそうです。