exc_bad_access(代码= 1,地址= 0x68)在第二个读取方法中

EXC_BAD_ACCESS (code=1, address=0x68) in second read method

本文关键字:第二个 读取 方法 0x68 access bad 代码 exc 地址      更新时间:2023-10-16

我对使用xcode进行C 是相对较新的。

我的问题是:

我正在尝试使用FOPEN读取两个TXT文件,这些文件我制作了两种不同的方法(在示例代码中,我只有一种可以简短的方法(,这两种方法都可以读取文件,即读取文件的完美工作,即当我测试它们时他们单独在主要中,完美地从文件中读取数据。但是,如果我在主机中将这两种方法都列为两种方法,则在阅读第二个TXT文件时会抛出" exc_bad_access(code = 1,地址= 0x68("。因此,似乎不可能打开并读取超过1个文件。我的代码看起来像这样:

#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, "%ft", 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线上抛出的。有人知道问题可能是什么吗?

找到了答案。应该使用" strcpy"而不是" strcat"。THX提供帮助和建议!

您永远不会初始化i

for (int i == 0; i < 10; i++){

应该是:

for (int i = 0; i < 10; i++){

i可能包含垃圾,这会导致您放置随机的内存并提供不良访问。