ページ 11

c言語ではできたのですが、c++ではできません

Posted: 2011年1月19日(水) 13:56
by tech

コード:

#include <fstream>
#include <iostream>
#include <string>
#define BUFLEN (255)

using namespace std;

int main(int argc, char *argv[])
{
	int i;
	FILE *fp;
	char cbuf[BUFLEN];
	fp=fopen(argv[1],"r");
	
	do
	{
		fgets(cbuf,BUFLEN,fp);
		if(!feof(fp))
		{
			for(i=0;(cbuf[i])!='\0';i++)
			{
				fputc(toupper(cbuf[i]),stdout);
			};
		};
	}while(!feof(fp));
	fclose(fp);

	return 0;
}
ファイルをコマンドラインから入力して、そのファイルの文字を小文字から大文字に変換するプログラムです。
学校の課題なのですが、C++言語の課題です。
自分が作れたのは、C言語のプログラムでして、C++にすることができません。
fstream fin;
fin.open(argv[1]);
fin.close();
みたいにやるんだということは分かっているのですがそこでうまくC++にすることができないので、よろしければ解答願います。

説明が下手で申し訳ありません。要は、このプログラムをC++にしてほしいです。お願いします。

Re: c言語ではできたのですが、c++ではできません

Posted: 2011年1月19日(水) 14:31
by bitter_fox
tech さんが書きました:説明が下手で申し訳ありません。要は、このプログラムをC++にしてほしいです。お願いします。
とのことですが、この掲示板では、課題の丸投げは禁止されています。

ですので、簡単なサンプルを載せます。

コード:


#include <iostream> // cout
#include <fstream>  // ifstream

using namespace std;

void main(int argc, char **argv)
{
	char input;

	if (argc < 2)
	{
		cout << "arg error" << endl;
		return;
	}

	ifstream ifs(argv[1]); // ファイルを開く

	if (ifs.fail()) // ファイルオープンエラー
	{
		cout << "error" << endl;
		return;
	}

	ifs.get(input); // 一文字取得する(参照を利用)

	if (ifs.eof()) // EOFを検出
	{
		cout << "<<End Of File>>" << endl;
		ifs.close();
		return;
	}

	cout << input; // 一文字出力

	ifs.close(); // ファイルを閉じる
}
一文字だけ取得するサンプルです。

Re: c言語ではできたのですが、c++ではできません

Posted: 2011年1月19日(水) 15:24
by さかまき
VC6 ですが、とりあえず、このままで拡張子cppにしてコンパイル・実行できますね。
逆にCじゃコンパイルできません。

http://dixq.net/forum/viewtopic.php?f=3&t=7595
の人にも教えてあげたいですねぇ。
リンク先のリンク先のリンク先ではネット上の課題だったそうですが、学校がそれをぱくったんでしょうか。

Re: c言語ではできたのですが、c++ではできません

Posted: 2011年1月19日(水) 17:17
by softya(ソフト屋)
techさん。
この件ですが、同様の質問が1つの大学内からアクセスされていることは確認しました。

同様の質問。
viewtopic.php?f=3&t=7595
techさんのコード自体が知恵袋内のコードと酷似しています。

上の質問と同じ大学内であると言う事が分かるだけで同じ方か別の方かは分かりませんが、自分で解くためのお手伝いならしますので回答を頂きたいと思います。
もし名前を変えているのでしたらルール違反ですので、名前を変えないようにしてください。