2013-12-12 2 views
1

Мне нужно прочитать 2 строки (слова) из файла на C++ и хотя у моего кода нет ошибок при запуске программы, я получаю следующее сообщение: «strmatch.exe перестает работать ». Как я могу избавиться от этой проблемы?Чтение 2 строки из файла

Здесь входной файл и мой код:

// strmatch.in file 
ABA 
CABBCABABAB 

// code 
#include <iostream> 
#include <fstream> 
#include <string.h> 

using namespace std; 

#define length 2000001 

int main() { 
    int i; 
    char a[length], b[length]; 
    ifstream f("strmatch.in"); 
    f>>a; 
    f>>b; 
    f.close(); 
    for (i=0;i<strlen(a);i++) 
     cout<<a[i]; 
    cout<<"\n"; 
    for (i=0;i<strlen(a);i++) 
     cout<<b[i]; 
    return 0; 
} 

ответ

0

Есть две причины, почему эта программа может перестать работать:

  • Струны, которые вы пытаетесь выделить слишком велики для автоматическая область хранения (также называемая «стек») в вашей системе, или
  • Файл, который вы открываете, не существует.

Рассмотрите возможность использования std::string вместо массивов для ваших строк. Это более экономично с точки зрения памяти, и это гарантирует вам недостаточные ошибки памяти.

Если используются строки C такой огромной длиной требуется ваше назначение, рассмотреть вопрос о переносе строки в динамическую память, например:

char *a = new char[length]; 
char *b = new char[length]; 
// Do the work, then delete the char arrays 
... 
delete[] a; 
delete[] b; 
+0

Спасибо за ответ. –

+0

@ FlorinFrătică Добро пожаловать! Попробуйте, и дайте мне знать, если это сработает. – dasblinkenlight

Смежные вопросы