title: what "Debug Assertion Failed" mean and how to fix it, c++?
body: <p>why this program gives me a "Debug Assertion Failed" Error Message while running</p>
  
  <pre><code>#include "stdafx.h"
  #include "iostream"
  #include "fstream"
  #include "string"
  using namespace std;
  
  int conv_ch(char b)
  {
      int f;
      f=b;
      b=b+0;
      switch(b)
      {
      case 48:
          f=0;
          break;
      case 49:
          f=1;
          break;
      case 50:
          f=2;
          break;
      case 51:
          f=3;
          break;
      case 52:
          f=4;
          break;
      case 53:
          f=5;
          break;
      case 54:
          f=6;
          break;
      case 55:
          f=7;
          break;
      case 56:
          f=8;
          break;
      case 57:
          f=9;
          break;
      default:
          f=0;
      }
      return f;
  } 
  
  class Student
  {
  public:
      string id;
      size_t id_len;
      string first_name;
      size_t first_len;
      string last_name;
      size_t last_len;
      string phone;
      size_t phone_len;
      string grade;
      size_t grade_len;
      void print();
      void clean();
  };
  void Student::clean()
  {
      id.erase (id.begin()+6, id.end());
      first_name.erase (first_name.begin()+15, first_name.end());
      last_name.erase (last_name.begin()+15, last_name.end());
      phone.erase (phone.begin()+10, phone.end());
      grade.erase (grade.begin()+2, grade.end());
  }
  void Student::print()
  {
      int i;
      for(i=0;i&lt;6;i++)
      {
          cout&lt;&lt;id[i];            
      }
      cout&lt;&lt;endl;
      for(i=0;i&lt;15;i++)
      {
          cout&lt;&lt;first_name[i];            
      }
      cout&lt;&lt;endl;
      for(i=0;i&lt;15;i++)
      {
          cout&lt;&lt;last_name[i];         
      }
      cout&lt;&lt;endl;
      for(i=0;i&lt;10;i++)
      {
          cout&lt;&lt;phone[i];         
      }
      cout&lt;&lt;endl;
      for(i=0;i&lt;2;i++)
      {
          cout&lt;&lt;grade[i];         
      }
      cout&lt;&lt;endl;
  
  }
  
  
  int main()
  {
      Student k[80];
      char data[1200];
      int length,i,recn=0;
      int rec_length;
      int counter = 0;
      fstream myfile;
      char x1,x2;
      char y1,y2;
      char zz;
      int ad=0;
      int ser,j;
      myfile.open ("example.txt",ios::in);
      int right;
      int left;
      int middle;
      string key;
      while(!myfile.eof()){
              myfile.get(data,1200);
              char * pch;
              pch = strtok (data, "#");
              printf ("%s\n", pch);
              j=0;
              for(i=0;i&lt;6;i++)
              {
                  k[recn].id[i]=data[j];
                  j++;
              }
              for(i=0;i&lt;15;i++)
              {
                  k[recn].first_name[i]=data[j];
                  j++;
              }
              for(i=0;i&lt;15;i++)
              {
                  k[recn].last_name[i]=data[j];
                  j++;
              }
              for(i=0;i&lt;10;i++)
              {
                  k[recn].phone[i]=data[j];
                  j++;
              }
              for(i=0;i&lt;2;i++)
              {
                  k[recn].grade[i]=data[j];
                  j++;
              }
              recn++;
              j=0;
      }
  
  
      //cout&lt;&lt;recn;
      string temp1;
      size_t temp2;
      int temp3;
      for(i=0;i&lt;recn-1;i++)
      {
          for(j=0;j&lt;recn-1;j++)
          {   
              if(k[i].id.compare(k[j].id)&lt;0)
              {
                  temp1 = k[i].first_name;
                  k[i].first_name = k[j].first_name;
                  k[j].first_name = temp1;
  
                  temp2 = k[i].first_len;
                  k[i].first_len = k[j].first_len;
                  k[j].first_len = temp2;
  
                  temp1 = k[i].last_name;
                  k[i].last_name = k[j].last_name;
                  k[j].last_name = temp1;
  
                  temp2 = k[i].last_len;
                  k[i].last_len = k[j].last_len;
                  k[j].last_len = temp2;
  
                  temp1 = k[i].grade;
                  k[i].grade = k[j].grade;
                  k[j].grade = temp1;
  
                  temp2 = k[i].grade_len;
                  k[i].grade_len = k[j].grade_len;
                  k[j].grade_len = temp2;
  
                  temp1 = k[i].id;
                  k[i].id = k[j].id;
                  k[j].id = temp1;
  
                  temp2 = k[i].id_len;
                  k[i].id_len = k[j].id_len;
                  k[j].id_len = temp2;
  
                  temp1 = k[i].phone;
                  k[i].phone = k[j].phone;
                  k[j].phone = temp1;
  
                  temp2 = k[i].phone_len;
                  k[i].phone_len = k[j].phone_len;
                  k[j].phone_len = temp2;
  
              }
          }
      }
      for(i=0;i&lt;recn-1;i++)
      {
      k[i].clean();
      }
      char z;
      string id_sear;
      cout&lt;&lt;"Enter 1 to display , 2 to search , 3 to exit:";
      cin&gt;&gt;z;
      while(1){
          switch(z)
          {
          case '1':
              for(i=0;i&lt;recn-1;i++)
              {
                  k[i].print();
              }
              break;
          case '2':
              cin&gt;&gt;key;
              right=0;
              left=recn-2;
              while(right&lt;=left)
              {
                  middle=((right+left)/2);
                  if(key.compare(k[middle].id)==0){
                      cout&lt;&lt;"Founded"&lt;&lt;endl;
                      k[middle].print();
                      break;
                  }
                  else if(key.compare(k[middle].id)&lt;0)
                  {
                      left=middle-1;
                  }
                  else
                  {
                      right=middle+1;
                  }
              }
              break;
          case '3':
              exit(0);
              break;
  
          }
          cout&lt;&lt;"Enter 1 to display , 2 to search , 3 to exit:";
          cin&gt;&gt;z;
  
      }
  
      return 0;
  }
  </code></pre>
  
  <p>the program reads from a file example.txt</p>
  
  <pre><code>313121crewwe         matt           0114323111A #  
  433444cristinaee     john        0113344325A+#  
  324311matte          richee          3040554032B #  
  </code></pre>
  
  <p>the idea is to read fixed size field structure with a text seprator record strucutre</p>