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

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

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

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

Q&A

解決済

4回答

1035閲覧

文字列の文字の数え方

akira-

総合スコア2

C

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

0グッド

0クリップ

投稿2020/10/11 09:00

初学者です。文字列の文字の数え方がわからないのですが、

例えば入力された文字が「abcde」とかならわかるのですが、「abcd e」などのように空白があるとき、空白も含めた文字の数の数え方がよくわかりません。出力は前者が5、後者が6となるようにしたいです。

文字と空白をわけて数える必要があるのですか?

ご回答いただけたら幸いです。

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

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

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

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

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

pepperleaf

2020/10/11 09:05

何のため? コンピュータじゃない世界だと、空白は数えない、、てのはありますが、C言語で文字数と言うと、空白も一文字と思います。 どういう状況でしょうか。
akira-

2020/10/11 09:25

後者で入力したら4と表示されてしまい、悩んでいましたが解決できました。ありがとうございます。
guest

回答4

0

おそらく次のようなコードを書いて実行したのでありませんか?

C

1#include <stdio.h> 2#include <string.h> 3 4int main(void) 5{ 6 char s[100]; 7 scanf("%s", s); 8 int n = strlen(s); 9 printf("%d\n", n); 10}

abcde Enter と入力すると 5 と表示される。
abcd e Enter と入力すると 4 と表示される。

これは、scanf の "%s" が空白を区切りとした文字列しか読み込まないからです。
abcd e Enter と入力すると char配列 s には、"abcd" しか入りません。

投稿2020/10/11 09:55

kazuma-s

総合スコア8224

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

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

0

出力は前者が5、後者が6となるようにしたいです。

入力と出力とあるので何かしらの練習問題なのでは無いかと推測し一例として回答します。
もし練習問題でないならどういう背景で必要になったのか明記すると回答しやすいと思います。
(オンライン上の練習問題、著書の練習問題、学校の宿題、友達から出題された問題、実務や自作アプリで必要など)

参考:C言語での一行入力の方法

C

1#include <stdio.h> 2#include <string.h> 3 4int main(void) { 5 char str[10]; 6 fgets(str, 10, stdin); 7 printf("%s\n", str); 8 int len = strlen(str); 9 printf("%d\n", len); 10 return 0; 11}

投稿2020/10/11 09:27

mjk

総合スコア303

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

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

0

出力は前者が6、後者が7です。
何をさして文字数といっているかによりますが、
char[]に入れるなら空白もカウントしますし
文字列末尾に「\0」が必要なので
上記の答えになります。

あとは自分のロジックに合うように
引き算するなり何なりしてください。

投稿2020/10/11 09:05

hana_yama_san

総合スコア923

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

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

0

ベストアンサー

strlen 関数で文字列長がわかります。
って、そういうことかな?

投稿2020/10/11 09:03

y_waiwai

総合スコア87793

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問