C言語→C#に変換
C言語からC#に変換したいのですが、わからないところがあります。
コマンドライン引数からファイル名とキーワードを入力して、キーワードがある行をアウトプットファイルに書き込むという処理です。
C言語のソースは、
main(int argc,char *argv[]){
FILE *fp;
FILE *fpp;
int i;
char KEYWORD[256];
char buf[256];
//(1)アウトプットファイルのオープン
fpp=fopen("output.txt","w");
for(i=1;i<argc-1;i++){
if(strcmp(argv[i],"-a")==0){
//(2)入力ファイルのオープン
if((fp=fopen(argv[i],"r"))==NULL){
printf("open error!\n");
exit(1);
}
}
//(3)キーワードの代入
if(strcmp(argv[i],"-b")==0){
strcpy(KEYWORD,argv[i]);
}
}
//(4)一行読み込む
while(fgets(buf,sizeof(buf),fp)!=NULL){
//(5)キーワードの条件で文字列抽出
if(strstr(buf,KEYWORD)!=NULL){
//(6)アウトプットファイルに出力
fprintf(fpp,"%s",buf);
}
}
//ファイルクローズ
fclose(fp);
fclose(fpp);
}
です。
(3)キーワードの代入と、(5)文字列抽出の部分がネットなどで調べてもよくわかりません。
分かる方いらっしゃいましたら教えていただけると幸いです。
宜しくお願いします。
.
No.2ベストアンサー
- 回答日時:
変換というよりは「仕様を理解して作り直し」に近いでしょうねぇ。
コマンドライン引数を取るのは以下のURL参照。
http://dobon.net/vb/dotnet/programing/commandlin …
このURLでは見ての通りfor eachを使っていますが、これでは「今見ている引数の次の引数」が取れないので配列のプロパティcountを使ってforで回しましょう。
(5)は文字列の抽出というか、文字列内文字列走査ですね。
こちらはString.IndexOfを使って実現すればいいでしょう。
http://msdn.microsoft.com/ja-jp/library/k8b1470s …
No.3
- 回答日時:
CとC#じゃデータ型の扱い方とかかなり違ってくるから、質問者がどういうやり方でやろうとしているのかの方針を見せてくれないと、単にCのコードを示してわかりませんと言われても答えようがありません。
例えば、文字列データはどういう形で持っているのか。
Cには文字列型などという概念が無いのでchar型配列で文字列データを扱っていますが、C#にはstring型が用意されているので基本的にはこれを用います。C#のデータ型は基本的にはすべてクラスで定義されていますので、string型も実体はStringクラスなので文字列操作に関わるメソッドなどが用意されています。文字列の比較・抽出などはそれを用いるのが基本でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[C言語]fputsとfprintfの違い
-
エクセルでアルファベットか数...
-
C言語で文字列の中の文字列のカ...
-
Excelはなんで先頭の0を消すん...
-
マクロ処理でのループの記述に...
-
【Excel VBA】複数ある特定の文...
-
sedなどで、特定の文字列の後の...
-
文字列からカンマを取り除きたい
-
エクセルでセル内の文字列の最...
-
Left関数とRight関数を合わせた...
-
A B C D E の五文字のすべてを...
-
VBAにおける文字列結合と繰り返...
-
VBの「As String * 128」とは?
-
OnTime 使用時のプロシージャへ...
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列をtxtファイル...
-
【COBOL】文字列から数値項目に...
-
同一セル内に関数と文字列を同...
-
StringGridで選択した箇所の文...
-
MS SQLServer のSQLで文字列の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
[C言語]fputsとfprintfの違い
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
エクセルで文字列の最大値を抽...
-
Excelはなんで先頭の0を消すん...
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
Left関数とRight関数を合わせた...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
Msgboxの×が押されたとき
-
sedなどで、特定の文字列の後の...
-
【Excel VBA】複数ある特定の文...
-
OnTime 使用時のプロシージャへ...
おすすめ情報