我对使用Xcode for c ++相对较新。
我的问题如下:
我正在尝试使用fopen读取两个txt文件,我为此制作了两种不同的方法(在示例代码中我只有一种方法可以保持简短)两种读取文件的方法完美分离,即当我测试它们时在主要的单独,他们从文件中完美地读取数据。但是,如果我在main中一起调用这两个方法,则异常" EXC_BAD_ACCESS(code = 1,address = 0x68)"在读取第二个txt文件时抛出。因此,打开和读取多个文件似乎是不可能的。我的代码看起来像这样:
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <time.h>
#include <assert.h>
#include <vector>
#include <iterator>
#include <algorithm>
#include <numeric>
#include <sstream>
#include <vector>
float fl[10];
void readfile(std::string s){
strcat(filename, s.c_str());
input = fopen(filename, "r");
for (int i == 0; i < 10; i++){
fscanf(input, "%f\t", fl[i]);
}
fclose(input);
}
以下主要作品
int main(int argc, const char * argv[]) {
std::string s1 = "Input1";
readfile(s1);
return 0;
}
在这个主程序中,异常将在方法readfile(s2)中抛出。
int main(int argc, const char * argv[]) {
std::string s1 = "Input1.txt";
std::string s2 = "Input2.txt";
readfile(s1);
readfile(s2);
return 0;
}
txt文件input1和input2包含10个浮点数,每个浮点数用制表符分隔。
在fscanf行抛出异常。有没有人知道问题可能是什么?
答案 0 :(得分:0)
找到答案。应该使用'strcpy'而不是'strcat'。感谢帮助和建议!
答案 1 :(得分:0)
您永远不会初始化i
。
for (int i == 0; i < 10; i++){
应该是:
for (int i = 0; i < 10; i++){
i
可能包含垃圾,导致您取消引用内存的随机位并使您无法访问。