【发布时间】:2015-05-16 11:37:16
【问题描述】:
如果这是一个愚蠢的问题,我很抱歉,但我尝试了许多不同的来源,但我仍然没有得到我想要的。我正在开发一个从文本文件中读取的程序,在下面的代码中,我试图读取第一行,它会给我在它下面创建的电阻颜色代码的数量。我正在尝试读取数字(n)并简单地打印它以查看它的读数,但我什么也没得到。这似乎很简单,但我似乎无法理解。
`FILE *fpinpt;
FILE *fpoutpt;
FILE *fpnom;
int n, *ptr;
double a, b, c, d, e, f, g, h, i, j, k, l;
fpinpt= fopen("F:\EGR 107\EE\HW 4\resistorInput.txt","r");
fpoutpt= fopen("F:\EGR 107\EE\HW 4\resistorOutput.txt","w");
fpnom= fopen("F:\EGR 107\EE\HW 4\resistorNominal.txt","w");
fscanf(fpinpt,"%d\n",n);
printf("%d",n);
ptr=(int*)calloc(n, sizeof(int));
if (fpinpt==NULL)
{
printf("Error reading resistor file\n");
fclose(fpinpt);
}
if (ptr==NULL) printf("Error, memory not allocated\n");
`
【问题讨论】:
-
在
printf语句中添加换行符 -printf("%d\n", n);。标准输出通常是行缓冲,这意味着它不会向控制台写入任何内容,除非缓冲区已满、发送换行符或在输出流上调用fflush。 -
在调用 fopen() 之后立即检查是否成功调用 fopen被关闭并将分配的内存传递给free。请注意,如果 fopen 失败,则该文件未打开,因此不需要关闭。如果 calloc 失败,则不会分配内存,因此不需要调用 free。
-
@JohnBode 谢谢,但它并没有改变问题的结果。