質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

1174閲覧

isupperを使った文字数カウントが違う。

langhtorn

総合スコア105

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2020/07/14 10:03

編集2020/07/14 10:04

###実現したいこと
大文字が何回入力されたかを表示したい。

###問題点
大文字の数が違う。
私が考えた方法は
isupper大文字判定された文字をカウントする
です。
ところどころにprintfをいれて確認しているのですがどこが間違っているのかわかりません。
実行結果

文字列を入力してください ABChdgD64D n=10 chara[0]=ABChdgD64D cnt=1 chara[2]=ABChdgD64D cnt=2 chara[6]=ABChdgD64D cnt=3 アルファベット大文字の出現回数は3回です

###コード

C

1//大文字の出現回数 2 3#include<stdio.h> 4#include<ctype.h> 5 6//文字列の長さを求める 7int str_length(const char str[]) 8{ 9 int len=0; 10 while(str[len]) len++; 11 return len; 12} 13 14int main(void) 15{ 16 char chara[99]; 17 int cnt=0; 18 printf("文字列を入力してください\n"); 19 fgets(chara,99,stdin); //入力 20 unsigned i=0; 21 22 int n=str_length(chara); //文字数 23 printf("n=%d\n",n); 24 25 for(i=0;i<n;i++){ 26 if(isupper(chara[i])){ 27 cnt++; 28 printf("chara[%d]=%s cnt=%d\n",i,chara,cnt); 29 } 30 i++; 31 } 32 printf("アルファベット大文字の出現回数は%d回です\n",cnt); 33 34 return 0; 35}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

for の中に既に i++ があるのでブロック内の i++; は不要です。

c

1#include <stdio.h> 2#include <string.h> 3#include <ctype.h> 4 5//文字列の長さを求める 6int str_length(const char str[]) 7{ 8 int len=0; 9 while(str[len]) len++; 10 return len; 11} 12 13int main(void) 14{ 15 char chara[99]; 16 int cnt=0; 17 printf("文字列を入力してください\n"); 18 fgets(chara,99,stdin); //入力 19 unsigned i=0; 20 21 int n=str_length(chara); //文字数 22 printf("n=%d\n",n); 23 24 for(i=0;i<n;i++){ 25 if(isupper(chara[i])){ 26 cnt++; 27 printf("chara[%d]=%c cnt=%d\n",i,chara[i],cnt); 28 } 29 } 30 printf("アルファベット大文字の出現回数は%d回です\n",cnt); 31 32 return 0; 33}

ちなみに文字列の長さを得るには strlen が使えます。

投稿2020/07/14 10:11

編集2020/07/14 10:12
mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

langhtorn

2020/07/14 12:02

そうですね。i++;いりませんでした???? strlenで今度やってみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問