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

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

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

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

Q&A

解決済

1回答

1634閲覧

行数を付け文字数をカウントするプログラムについて

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

1グッド

1クリップ

投稿2020/05/12 19:14

編集2020/05/13 04:13

前提・実現したいこと

お世話になっております。
行数を頭に付けて、その行の文字数をカウントするプログラムを組みたいのですが、なかなかコンパイルできません。
例えば、
標準入力が 
abcdef ghijk lmnop
c programing
のとき、標準出力が
1[ 16] abcdef ghijk lmnop
2[ 13] c programming↵

◆行数[各行の文字数]入力内容

のように表示されるようにプログラミングしたいです。

下記は資料を参考に作ってみたのですが、混乱してしまいました。。
この場合どう修正したらよいかアドバイスをいただければ幸いです。
初心者なので、分かりにくい質問でしたらすみません。
宜しくお願い致します。

追記:例題の内容は下記のとおりです。
「標準入力」欄に英文(英数字の文字列)を入力すると,入力した英文の各行に,1から始まる行番号とその行の文字数を付加して「標準出力」に表示するプログラムを作成せよ。

条件:
①行番号は,行の先頭から3桁の右詰めで表示すること.
②行の文字数は,3桁の行番号に続けて「[」を表示し,そのあとに文字数を3桁の右詰めで表示し,そのあとに「]」を表示
③行の文字数のあとに半角の空白1文字を表示し,そのあとに入力した行の内容を表示すること.

#include <stdio.h> #include <string.h> #define SIZE 100 int main(void){ char line[SIZE] int i; for (i=1; fgets(line, SIZE, stdin)!=NULL; i++) { len = strlen(line); printf("%3d" [%s] " , len-1, line); fputs( line, stdout); } return 0; }
DrqYuto👍を押しています

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

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

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

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

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

y_waiwai

2020/05/12 22:09

提示のコードではどういう動作をするんでしょうか。 そして、それのどこがどういうふうに問題なんでしょう
kaina

2020/05/13 01:22

コードは「```」に囲われた範囲に記述するよう編集して下さい。 ``` コードをこの中に書くとインデントがある状態で表示されるようになります。 ```
退会済みユーザー

退会済みユーザー

2020/05/13 01:33

質問がわかりにくく大変失礼いたしました。 テンプレートに当てはめてみましたが、伝わりますでしょうか。。 宜しくお願い致します。
kaina

2020/05/13 01:43

はい、見やすくなりましたね。 尚、<code>ボタンを押すと「```」で囲われたテンプレが 枠内に挿入されるようになっているので、活用するといいです。 以下のURLを一読しておくとより良い質問が出来ると思います。 https://teratail.com/tour https://teratail.com/help/question-tips
退会済みユーザー

退会済みユーザー

2020/05/13 01:46

ご親切にありがとうございます! 大変助かりました。 次回質問する前に読んでみます。
guest

回答1

0

ベストアンサー

入力は半角英数と記号のみでしょうか。
記号は文字数にカウントするのでしょうか。
もう少し仕様をはっきりさせてください。

期待動作を見るに、スペースを除いた文字数を求めたいようですが、strlenはNULL文字以外をカウントするため、スペースを含んだ文字数が返ります。

入力は半角英数と記号のみなら
ctype.hをincludeして
アルファベットのみカウントするのであればisalphaが真(0以外)を返す文字数をカウント。
数字とアルファベットをカウントするのであればisalnumが真(0以外)を返す文字数をカウント。
スペース以外の表示文字をカウントするのであればisgraphが真(0以外)を返す文字数をカウント。

投稿2020/05/12 20:01

編集2020/05/13 02:33
SHOMI

総合スコア4079

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

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

退会済みユーザー

退会済みユーザー

2020/05/13 01:53

ご回答くださりありがとうございます。 ctypeを使うのですね、 今学習しているのがstudio,やっとstringを少し学び始めた状況です。 もう少し調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問