0

こんにちは、次のようなコードがあります。

#include <iostream>
#include <cstdio>
using namespace std;  
int main () {
    std::string s="fawwaz"; 
  ...
}

次に、gcc.gnu.org からダウンロードした gnu gcc オンライン インストーラーを使用して G++ でコンパイルしました。コンパイルはエラーや警告なしで実行されますが、実行すると、「プログラム a.exe が動作を停止しました」というエラーが表示されます。プログラムはエラーなしで実行されます。次に、プログラムがコンパイルされ、正常に実行された元のファイルをコンパイルしようとします (文字列宣言の前に二重のバックスラッシュはありません)。

解決策は?問題はどこですか?コマンドライン経由でコンパイルする方が速いので、Microsoft Visual C++経由ではなくコマンドライン経由でプログラムをコンパイルできるように、問題を解決する方法はありますか? :D

ありがとうございました

これは完全なコードです:

     #include <cstdio>
     #include <iostream>
     #include <fstream>
     #include <vector>
     #include <string>

     using namespace std;

     void Cetak_Puzzle_Start(){

     }

     int main(int argc, char const *argv[])
     {
        string s;
        ifstream file("input.txt");
        vector<vector<int> > Puzzle_Start;
        vector<vector<int> > Puzzle_Finish;
        int Puzzle_size=0;

        /*
        * RETRIEVE PUZZLE SIZE
        **/
        getline(file,s);
        for (int i = 0; i < s.length(); ++i)
            Puzzle_size= (Puzzle_size*10) + (int) (s[i]-'0');

        /*
        * Set Zero ukuran 3x3 vector Puzzle start dan Puzzle finish
        **/
        vector<int> vtemp(Puzzle_size,0); 
            for (int i = 0; i < Puzzle_size; ++i)
            {
            Puzzle_Start.push_back(vtemp);
            Puzzle_Finish.push_back(vtemp);
            }

            /*
            * RETRIEVE START STATE 
        **/
        getline(file,s);
        int m=0,n=0; // dummy var for looping only m:pointer baris, n:pointer kolom, 
        for (int i = 0; i < s.length(); ++i)
            if (n<Puzzle_size){
                if (s[i]=',')
                    n++;
                else if (s[i] >= '0' && s[i] <='9')
                    Puzzle_Start[m][n]= (Puzzle_Start[m][n] * 10) +(int) (s[i]-'0');
                else if (s[i] ='B')
                    Puzzle_Start[m][n]=-1;
             }else{
                 n=0; // Ganti baris
                 m++;
            }

        fclose(stdin);


        /*
        * CETAK PUZZLE
        **/
        // for (int i = 0; i < Puzzle_Start.size(); ++i){
        //  for (int j = 0; j < Puzzle_Start[i].size(); ++j)
        //      printf("%d ",Puzzle_Start[i][j]);
        //  printf("\n");
        // }
        return 0;

     }
4

1 に答える 1

0

これがバグです。

if (s[i]=',')

する必要があります

if (s[i]==',')

else if (s[i]='B')

する必要があります

else if (s[i]=='B')

(代入=) と==(等価) を混同するのはよくある間違いです。

于 2013-10-02T11:12:55.590 に答える