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

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

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

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

2回答

1520閲覧

特定の文字区切りの文字列の文字数をカウントしたい

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2021/10/18 15:25

編集2021/10/18 15:44

","で区切られた文字列ごとにカウントをしたいです。

C言語で書いています。
以下の条件のコードを書きたいです。
・コンマで区切られた各文字数を表示
・要素中のカンマは考えなくていい
・文字列関数の使用は禁止

発生している問題・エラーメッセージ

・","区切りで文字を数えられない。

該当のソースコード

C

1#include <stdio.h> 2#include <string.h> 3#define SIZE 30 4int main(void){ 5 char list[SIZE]; 6 7 printf("コンマで区切って文字列を入力をしてください:"); 8 scanf("%s",list); 9 10 return 0; 11}

補足情報(FW/ツールのバージョンなど)

期待する出力結果

コンマで区切って文字列を入力してください:1,野うさぎ,ハト,
1,4,2,

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

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

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

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

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

episteme

2021/10/18 15:28

> コンマで区切って文字列を入力してください:1,野うさぎ,ハト, > 1,4,3, なぜ"ハト"が3文字なんですか?
退会済みユーザー

退会済みユーザー

2021/10/18 15:44

すみません 単純なミスです 修正いたしました ご指摘ありがとうございます
episteme

2021/10/18 15:46

入力文字の文字コードは shift-jis? UTF-8? UTF16? ほかのなにか?
退会済みユーザー

退会済みユーザー

2021/10/18 16:07

UTF-8で想定しています
guest

回答2

0

「・文字列関数の使用は禁止」なら #include <string.h> は不要ですね。

期待する出力結果

コンマで区切って文字列を入力してください:1,野うさぎ,ハト,
1,4,2,

入力も出力も最後に「,」が付くんですね。そして、文字コードは UTF-8。

C

1#include <stdio.h> 2 3int main(void) 4{ 5 printf("コンマで区切って文字列を入力をしてください:"); 6 char s[100]; 7 scanf("%99s", s); 8 for (int k = 0, i = 0; s[i]; i++) 9 if (s[i] == ',') printf("%d,", k), k = 0; 10 else if ((s[i] & 0xc0) != 0x80) k++; 11 putchar('\n'); 12}

投稿2021/10/19 17:18

kazuma-s

総合スコア8224

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

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

0

文字数を数える処理はできていると言うことのようなので、あとはこんな感じで。

C

1mojisuu = 0; 2for(i=0;;i++){ 3 if(line[i]==','||line[i]=='\0'){ 4 printf("%d,", mojisuu); 5 if(line[i]=='\0') break; 6 mojisuu = 0; 7 }else{ 8 mojisuu に文字数を数える 9 } 10}

投稿2021/10/18 17:43

otn

総合スコア84808

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問