C++の問題!ストリームを用いたファイルの入出力でエラーが発生

このQ&Aのポイント
  • C++のストリームを用いたファイルの入出力でエラーが発生しています。
  • プログラムを実行すると、'exit' was not declared in this scope というエラーメッセージが表示されます。
  • 正しくプログラムを実行するためには、どこを修正すればよいのでしょうか?
回答を見る
  • ベストアンサー

C++の問題で質問です。

C++のストリームを用いたファイルの入出力の問題です。 #include<iostream> #include<fstream> using namespace std; int main() { ifstream fin; fin.open("test.txt"); if(!fin){ cout<<"Cannot open the file."<<"\n"; exit(1); } char str1[16]; char str2[16]; fin>>str1>>str2; cout<<"Tow words have been written!"<<"\n"; cout<<str1<<"\n"; cout<<str2<<"\n"; fin.close(); return 0; } このプログラムを実行しようとすると In function 'int main()'; 'exit' was not declared in this scope と表示されてしまいます。 どこが間違っているのでしょうか? わかる方がいらっしゃいましたらお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8518/19364)
回答No.1

「exitなんて関数は知らんぞゴルァ」って言ってるので「exit関数が定義してあるヘッダファイル」をインクルードしましょう。

その他の回答 (1)

  • cotae_bb
  • ベストアンサー率53% (51/95)
回答No.2

C言語ではmainからのexitとreturnは同じ扱いになるそうなので、 return 0 でいいと思いますが…

関連するQ&A

  • C++のifstreamの使い方

    C++のifstreamの使い方で分からない所があるので、分かる方御教示ください。 下記は、C++で読み込んだファイルの中身が空だった場合を無理やり例外処理を使って書いてみたのですが、中身が存在する場合、たとえば、 line1 line2 line3 ではline1を無限に繰り返してしまいます。(1)を ifstream instream = inStream(argv[1]); while (instream >> input) にするとうまくいくようなのですが、この違いがよくわかりません。 違いを教えてください。 #include <iostream> #include <string> #include <fstream> using namespace std; ifstream inStream(char *str); int main(int argc, char *argv[]) { if (argc < 2) cout << "ファイル名を指定してください" << endl; else { try { string input; while (inStream(argv[1]) >> input) // (1) cout << input << endl; } catch (int i) { cerr << argv[1] << "を開けません" << endl; } } return 0; } ifstream inStream(char *str) { ifstream inStream(str); if (!inStream) throw 1; return inStream; }

  • C++画像処理に困っています。。

    #include<iostream> #include<fstream> using namespace std; int main() { char outfile[]="256x256x100.bin";     ifstream fin(outfile, ios::in| ios::binary); ofstream fout; if(!fin){ cout << "ファイル1はオープンできません。endl"; return 1; } } const int SIZE=256; const int SLICE=100; signed short int* matrix= new signed short int[(SIZE)*(SIZE)*(SLICE)]; for(int i=0; i<SIZE*SIZE*SLICE; i++){ fin.read((char*) &matrix[i],sizeof(signed short int)); cout << matrix[i]; } delete[] matrix; fin.close(); fout.close(); return 0; } 上のように256x256x100の三次元データ(XxYxZ)を読み込む事ができ、256 pixelx256 pixelの画像が100枚表示することが出来ました。 次に、その画像データをXZ軸方面から見た画像データにしたいのですが、どのようにすればいいのでしょうか? たぶんY方向のデータを足し算して平均を求めればよいとは思うのですが、 プログラミング初心者なので、処理の方法が全く思い浮かびません。 どなたか教えて頂けますでしょうか?

  • Sortプログラムについて2

    えっと、前回もSortのプログラムについて、質問させていただいたのですが、このプログラムでは、二つのファイルを使ってソートしてるのですが、一つのファイルだけを使って、それに上書きするためにはどうするればいいでしょうか? 下に、ソースを貼っておきます。 #include <iostream> #include <fstream> #include <list> #include <string> using namespace std; int main() { char Str[255]; list<string> str; int count = 0; ifstream in("ttest", ios::binary | ios::in); if (!in){ cout << "入力ファイルが読み込めない" << endl; exit(1); } ofstream out("out", ios::binary | ios::out); if (!out){ cout << "出力ファイルが読み込めない" << endl; exit(1); } while (!in.eof()){ //!!!! in.getline(Str,255); str.push_back(Str); count++; } str.sort(); list<string>::iterator p; p = str.begin(); while(p!=str.end()){ out << *p << endl; p++; } in.close(); out.close(); getchar(); return 0; } よろしくお願いします。

  • Sortプログラムについて

    自分で作成したプログラムなのですが、ソートしたあと、出力ファイルに書き込みたいのですが、書き込めません。 どこが、悪いのかわからないので教えてください。 ところどころに、出力がありますが、それはトレースしたやつなので、それはほっといてくださって構いません。 下にプログラムを載せます。 よろしくお願いします。 #include <iostream> #include <fstream> #include <list> #include <string> using namespace std; int main() { char Str[255]; list<string> str; ifstream in("ttest", ios::binary | ios::in); if (!in){ cout << "入力ファイルが読み込めない" << endl; exit(1); } ofstream out("out", ios::binary | ios::out); if (!out){ cout << "出力ファイルが読み込めない" << endl; exit(1); } while (!in.eof()){ //!!!! in.getline(Str,255); str.push_back(Str); } str.sort(); list<string>::iterator p; p = str.begin(); while (!in.eof()){ cout << *p; out << *p++; } in.close(); out.close(); getchar(); return 0; }

  • 修正箇所の指摘のお願い(文字列の書き出し)

    C++についての質問です。 あるテキストファイルを読み込み、行頭の空白文字(スペース)を 削除して、別のテキストファイルへ書き出すプログラムを 作成しています。 下記のようにコーディングを行いましたが、 読み込みファイルの1行目が書き出されず、最終行が2回 書き出される状態となってしまいました。 お手数ですが、修正箇所を教えて頂けないでしょうか。 ************************************************************ #include <iostream> #include <string> #include <fstream> using namespace std; #define INPUT_FILE "C:\\input.txt" #define OUTPUT_FILE "C:\\output.txt" int main() { ifstream fin(INPUT_FILE); ofstream fout(OUTPUT_FILE); char str[255]; if(!fin) { cout << "入力ファイルを開けません\n"; return 1; } if(!fout) { cout << "出力ファイルを作成できません\n"; return 1; } fin.getline(str,254); while(!fin.eof()) { std::cin.setf( std::ios::skipws ); // スペースの読み飛ばし fin >> str; fout << str << std::endl; } fin.close(); fout.close(); return 0; } ************************************************************ よろしくお願いします。

  • C言語の問題

    選んだファイルのデータを読み取り、そのファイルのデータの中の文字列を数えるプログラム(例えば、「I like sport」 だったら3ワード)を作りたいのですが、文字数を数えるものしかわからないです。 一応、下のプログラムが文字数を数えるものですが、どうすれば文字列を数えるものになりますでしょうか?教えてください。 #include <stdio.h> #include <string.h> #include <stdlib.h> main() { FILE *fin; char filename[20]; char data[256]; int n; printf("ファイル名の入力 :"); gets(filename); fin=fopen(filename,"r"); if(fin == NULL){ printf("%sがオープンできません!\n",filename); exit(1); } while(fgets(data,256,fin) !=NULL){ } n=strlen(data); printf("ファイル %s には、%dワードがあります。\n",filename,n); fclose(fin); }

  • 自分で作成したプログラムについて…。

    visual stdio 2013 デスクトップ版のものを使い、下に書くプログラムを作ったのですが、 visual stdio 2013では、ファイルが開けませんとなり、途中で、終了してしまうのですが、mingwでは、ちゃんとファイルが開けて、プログラムが、最後まで動作するのですが、なぜでしょうか? 原因を詳しく教えてください。また、改善方法も教えてください。 プログラム #include <iostream> #include <fstream> #include <ctime> #include <cstdlib> #include <list> #include <string> using namespace std; int main() { srand((unsigned)time(NULL)); list<string> str; char sstr[255]; int count = 0; int i; ifstream in("ttest", ios::in | ios::binary); if (!in){ cout << "入力ファイルが開けません\n"; getchar(); return 1; } while (!in.eof()){ in.getline(sstr, 255); str.push_back(sstr); count++; } i = rand() % count ; list<string>::iterator p; p = str.begin(); for (int j = 2; j <= i; j++)p++; cout << *p; cout << endl; getchar(); return 0; }

  • C++のnew演算子で動的確保

    new()を初めて使ってみました。 エラーは無かったけど、間違いがあったら教えてください。 #include <iostream.h> main(){ int n = 0; char* str = "mojisuufumei"; char* myValue; while(!str[n])n++; myValue = new char[n+1]; strcpy(myValue, str); cout << myValue; delete []myValue; } char*型のmyValueを動的確保したつもりです。 myValue[0], myValue[1], … のそれぞれの値を unsignedにして宣言したい場合はどうしたらいいんですか? #include <iostream.h> main(){ int n = 0; char* str = "mojisuufumei"; unsigned char* myValue; while(!str[n])n++; myValue = new unsigned char[n+1]; strcpy(myValue, str); cout << myValue; delete []myValue; } だと、strcpy()のとこでコンパイルエラーでした。

  • [C++]ファイル出力について

    教えてください。 コマンドプロンプトから何行か書いた文章をファイルにしたいのですが、 うまくいきません。 作ったものの結果は1行1文字で出力されて、eofでうまく 終わってくれません。 コマンドプロンプトで入力(改行)された通りにファイルに出力 できるようにしたいので、どこがおかしいのか指摘お願いします。 #include <iostream> #include <fstream> #include <stdlib.h> #include <string.h> #include <string> using namespace std; int main(int argc, char *argv[]) { char str[100]; int i; i = 0; if (argc <= 1) { cerr << "Need filename" << endl; exit (1); } ifstream ifs(argv[1], ios::in); if (ifs) { cerr << "Caution" << argv[1] << " already exists " << endl; cerr << " Specify a different filename " << endl; exit (2); } ofstream ofs(argv[1], ios::out); if (!ofs) { cerr << " Unable to write to " << argv[1] << endl; exit (3); } while(str[i] !=EOF) { cin >> str[i]; ofs << str[i] << endl; i++; } return 0; }

  • 配列の練習問題

    #include<iostream> using namespace std; //count関数の宣言 int count(char str[], char ch); int main() { char str[100]; char ch; cout << "文字列を入力して下さい。\n"; cin >> str; cout << "文字列から探す文字を入力して下さい。\n"; cin >> ch; int c = count(str, ch); cout << str << "の中に" << ch << "は" << c << "個あります。\n"; return 0; } //count関数の定義 int count(char str[], char ch) { int i = 0; int c = 0; while (str[i]) { if (str[i] == ch) c++; i++; } return c; } こんにちは。 この問題の解答のプログラムの意味がイマイチ解らないので良かったら教えて下さい。 確認がてらに質問します。 よろしくお願いします。

専門家に質問してみよう