Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调用fscanf后奇怪的局部变量更改_C++ - Fatal编程技术网

C++ 调用fscanf后奇怪的局部变量更改

C++ 调用fscanf后奇怪的局部变量更改,c++,C++,我有一段代码从文件中读取一些参数: int readInput() { cfFile = fopen(CONFIGFILE,"r"); inFile = fopen(INPUTFILE,"r"); fscanf(cfFile,"%d",&player); fscanf(inFile,"%d%d%d%d",&remaining[0],&remaining[1],&lastRow,&lastCol); char line

我有一段代码从文件中读取一些参数:

int readInput()
{
    cfFile = fopen(CONFIGFILE,"r");
    inFile = fopen(INPUTFILE,"r");
    fscanf(cfFile,"%d",&player);
    fscanf(inFile,"%d%d%d%d",&remaining[0],&remaining[1],&lastRow,&lastCol);
    char line[boardWidth+1];
    for (int i=0;i<boardHeight;++i)
    {
        //int l = i;
        fscanf(inFile,"%s",line);
        for (int j=0;j<boardWidth;++j)
        {
            int val = 0;
            if (line[j] == 'r') val = 0;
            if (line[j] == 'b') val = 1;
            if (line[j] == '_') val = 2;
            if (line[j] == 'x') val = 3;
            M[i][j]=val;
        }
    }
    fclose(cfFile);
    fclose(inFile);
}
int readInput()
{
cfFile=fopen(配置文件,“r”);
inFile=fopen(输入文件,“r”);
fscanf(cfFile、%d、&player);
fscanf(填充,“%d%d%d”、&剩余的[0]、&剩余的[1]、&lastRow、&lastCol);
字符线[boardWidth+1];

对于(inti=0;i直线的定义是什么?它是(非常)很可能读取的字符数超过了变量大小。

使用所有变量声明和main创建一个完整的测试用例,确保代码的其他部分没有内存泄漏。添加一个触发问题的文件示例。文件中的行可能比
缓冲区长,因此
fscanf()读取数据
溢出,堆栈的其他部分被覆盖。变量
i
存储在该区域的某个地方,因此也被覆盖。
fscanf
with
%s
get
一样危险。千万不要使用它。