该程序从文件中取一个数字,并引入一个矩阵n * n
(n
是所取的数字),其中所有矩阵都是0。
问题在于,如果我只执行for
仅00, 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)
答案 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
}