引入第二个for循环时出现分段错误

时间:2015-05-31 09:34:07

标签: c file-io segmentation-fault

该程序从文件中取一个数字,并引入一个矩阵n * nn是所取的数字),其中所有矩阵都是0。

问题在于,如果我只执行for00, 11, 22, ... for没有任何问题,则在引入第二个#include <stdio.h> int main(int argc, char* argv[]) { FILE* fitxer; int n, m, i,j; int inc[n][n]; fitxer=fopen(argv[1], "rt"); if(fitxer == NULL) { fprintf(stderr, "ERROR: el fitxer %s no es pot obrir\n", argv[1]); return 1; } else { if(!fscanf(fitxer, "%d %d", &n, &m)); printf("%d, %d\n", n, m); for(i=0; i<n; i++) { for(j=0; j<n; j++) { inc[i][j]=0; printf("%d ", inc[i][j]); } } printf("\n"); } fclose(fitxer); printf("Bien!\n"); return 0; } 时会出现问题。该程序返回一个段违规。

import yagmail
yag = yagmail.SMTP(username, password)
yag.send(to_addrs, contents = msg)

1 个答案:

答案 0 :(得分:1)

下面:

int inc[n][n];
未初始化的

n。这会导致未定义的行为。在

之后移动它
if(!fscanf(fitxer, "%d %d", &n, &m));

解决问题。但是上面的if毫无意义。使用以下方法修复它:

if(fscanf(fitxer, "%d %d", &n, &m) != 2) //If fscanf failed to scan two integers from the file
{
    printf("Error reading from file");  //Print error message
    return 1;                           //Exit the program
}