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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tech

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

#1

投稿記事 by tech » 14年前

コード:

#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++にしてほしいです。お願いします。

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

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

#2

投稿記事 by bitter_fox » 14年前

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(); // ファイルを閉じる
}
一文字だけ取得するサンプルです。

アバター
さかまき
記事: 92
登録日時: 14年前

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

#3

投稿記事 by さかまき » 14年前

VC6 ですが、とりあえず、このままで拡張子cppにしてコンパイル・実行できますね。
逆にCじゃコンパイルできません。

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 14年前

techさん。
この件ですが、同様の質問が1つの大学内からアクセスされていることは確認しました。

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

上の質問と同じ大学内であると言う事が分かるだけで同じ方か別の方かは分かりませんが、自分で解くためのお手伝いならしますので回答を頂きたいと思います。
もし名前を変えているのでしたらルール違反ですので、名前を変えないようにしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る