我需要从C ++文件中读取2个字符串(单词),虽然我的代码在运行程序时没有任何错误,但我收到以下消息:“strmatch.exe已停止工作”。我怎样摆脱这个问题?
这是输入文件和我的代码:
// 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 :(得分:0)
此计划可能会停止工作有两个原因:
考虑为您的字符串使用std::string
而不是char
数组。这在内存方面更经济,它可以保证您不会出现内存错误。
如果您的作业需要使用如此巨大长度的C字符串,请考虑将字符串移动到动态内存中,如下所示:
char *a = new char[length];
char *b = new char[length];
// Do the work, then delete the char arrays
...
delete[] a;
delete[] b;