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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

3回答

1637閲覧

C言語の文字配列に関する問題。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/01/21 10:08

ほんとにできなくて困ってます。
出来る方お願いします。
めちゃめちゃ急ぎです。
C言語です

ーーーー
コマンドラインに指定した名前のテキストファイルの中の文字数を画面に表示するプログラムを作りなさい。ただし名前の前に[-u][-l][-n]というスイッチをつけた場合、それぞれアルファベットの大文字、小文字数字だけを数えるようにし、getopt 関数は使用しないこと。ファイルには全角文字、改行コード以外の制御文字、英数字以外の文字は書かれてしないとして良い。

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

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

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

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

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

dice142

2019/01/21 10:10

・C言語とC#は別物なので「C」タグに置き換えてください。 ・このままでは丸投げなので、「どこまでできていて」「どこがわからないのか」、そしてコードを質問文に追記してご提示ください。
guest

回答3

0

まずは、コマンドラインで指定したファイル名のファイルの読み出しのコードを書いてみましょう

投稿2019/01/21 10:32

y_waiwai

総合スコア87774

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

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

0

まず、回答を書きますね。
もし、説明も必要ならコメントしてください。

#include <stdio.h> int main(int argc,char *argv[]) { if(argc >= 2) { FILE *file; char c; int num_of_char = 0;//ファイルの文字数 file = fopen(argv[1],"r"); if(file == NULL) { printf("file not open!"); return 0; } if(argc == 3) { while((c = fgetc(file)) != EOF) { switch (argv[2][1]) { case 'u': if((c >= 'A') && (c <= 'Z'))//その文字が大文字なら { num_of_char++; } break; case 'l': if((c >= 'a') && (c <= 'z'))//その文字が小文字なら { num_of_char++; } break; case 'n': if((c >= '0') && (c <= '9'))//その文字が数字なら { num_of_char++; } break; default: printf("the switch is not valid"); return 0; break; } } }else { while((c = fgetc(file)) != EOF) { num_of_char++; } } fclose(file); printf("%d",num_of_char); }else { printf("set file name!!"); return 0; } return 0; }

もしわかりにくい部分があれば遠慮なく教えてください。

投稿2022/09/19 07:37

shamsham

総合スコア38

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

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

0

タグがC#なので、C#でかきます(それが私がこの質問に出あった理由なので、つまり今後他のC#で同じことしたいなと思った人が見に来る可能性があるということ)

csharp

1public class Program 2{ 3 public static int Main(string[] args) 4 { 5 if((args?.Length ?? 0) < 2) { return 0;} 6 var text = System.IO.File.ReadAllText(args[0]); 7 var f = new List<Func<char, bool>>(); 8 switch(args[1]) 9 { 10 case "-u" : f.Add(char.IsLetter);f.Add(char.IsUpper);break; 11 case "-l" : f.Add(char.IsLetter);f.Add(char.IsLower);break; 12 case "-n" : 13 default : f.Add(char.IsNumber);break; 14 } 15 return CountChars(text, f); 16 } 17 public static int CountChars(string text, IEnumerable<Func<char, bool>> validators) => text.Count(x => validators.All(y => y(x))); 18}
  • Cでかくから、Fileの読み取りとか、判定とかで面倒なことしなきゃならない(初心者ほど他の言語からやるべき)
  • この課題出した人は問題が分離できてないですね(事前に、ファイルを読むのと、文字列の処理を出題してれば別ですが、UNIX哲学わかってるなら、コマンドラインパラメータにファイル名を取るよりも、catにファイル名を入れて、中身をパイプで渡してカウントってやるはず。分かってない人に教えられればそりゃこういうところで答えをききたくもなる)

いちおうC#をcに変換してくれるかもしれないサービスを見つけたので共有しておきます。

投稿2019/01/22 05:09

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問