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

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

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

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

Q&A

解決済

2回答

2126閲覧

文字列のプログラムについて

Royal

総合スコア13

C

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

0グッド

0クリップ

投稿2017/05/31 15:02

編集2017/05/31 15:03

Cを使って3つの文字列を入力し一番文字数が最多の文字列を出力する(ただし最多の数と同じ数の文字列がある場合同じ数の文字列をすべて出力) というプログラムを作っているのですが今文字数をstrlenで数えてからどのようにプログラムを組めばいいのでしょうか

現在はこうなっています

int main(void) { char a[100], b[100], c[100]; int d,e,f; printf("文字列1:"); scanf("%s", a); d = strlen(a); printf("文字列2:"); scanf("%s", b); e = strlen(b); printf("文字列3:"); scanf("%s", c); f = strlen(c);

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

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

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

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

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

guest

回答2

0

配列をつかってみました。
また, scanf でなく、fgets をつかいました。

c

1#include <stdio.h> 2#include <string.h> 3 4int maxlen(int * lens, int num) { 5 int max = -1; 6 for (int i = 0; i < num; i++) { 7 if (max < lens[i]) { 8 max = lens[i]; 9 } 10 } 11 return max; 12} 13 14int main(void) { 15 16 char strs[3][100]; 17 int lens[3]; 18 19 for (int i = 0; i < 3; i++) { 20 int len; 21 printf("文字列1:"); 22 fgets(strs[i], 100, stdin); 23 len = strlen(strs[i]); 24 strs[i][len - 1] = '\0'; // 末尾の改行コードを削除する 25 lens[i] = len; 26 } 27 28 int max = maxlen(lens, 3); 29 for (int i = 0; i < 3; i++) { 30 if (lens[i] == max) { 31 puts(strs[i]); 32 } 33 } 34 35 return 0; 36} 37

投稿2017/05/31 22:05

katoy

総合スコア22324

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

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

Royal

2017/05/31 23:44

回答ありがとうございます、参考になりました
guest

0

ベストアンサー

こういう感じでどうでしょうか

#include <stdio.h> #include <string.h> int max(int x, int y) { return x>y?x:y; } int main(void) { char a[100], b[100], c[100]; int d,e,f; printf("文字列1:"); scanf("%s", a); d = strlen(a); printf("文字列2:"); scanf("%s", b); e = strlen(b); printf("文字列3:"); scanf("%s", c); f = strlen(c); int max_len = max(max(d, e), f); if(d==max_len) puts(a); if(e==max_len) puts(b); if(f==max_len) puts(c); return 0; }

投稿2017/05/31 15:29

SaitoAtsushi

総合スコア5444

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

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

Royal

2017/05/31 23:41 編集

回答ありがとうございます 同じ数だったら出力をする という手がありましたか...とても参考になりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問