我已经在这个问题上敲了一会儿: 如果我写
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main ( int argc, char *argv[] )
{
int cnum, c1;
FILE *fp;
srand(time(NULL));
printf("count of numbers: ");
scanf ("%i",&cnum);
printf("echo123");
fp = fopen("randomnumbers.txt", "w");
fprintf(fp, "%d ", cnum);
for(c1=0; c1<cnum; c1++)
{
fprintf(fp, "%d ", rand()%1000);
}
fclose(fp);
return 0;
}
我在执行scanf期间遇到了分段错误。如果我打开文件&#34; w&#34;但一切正常。我没有得到这两件事之间的关系,但我已经隔离了代码并证明这确实是触发段错误的原因。 Echo123永远不会被打印出来。
答案 0 :(得分:0)
您没有看到“echo123”的事实并不意味着您的程序在该行之前进行了分段。很可能打印输出是缓冲的,稍后会刷新,也许是在打印换行符时。
要避免缓冲输出,请尝试使用fprintf(stderr,"echo123\n");
。