使用scanf和r +文件时出现分段错误(核心转储)

时间:2014-11-14 20:48:25

标签: c file-io io

我已经在这个问题上敲了一会儿: 如果我写

#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永远不会被打印出来。

1 个答案:

答案 0 :(得分:0)

您没有看到“echo123”的事实并不意味着您的程序在该行之前进行了分段。很可能打印输出是缓冲的,稍后会刷新,也许是在打印换行符时。

要避免缓冲输出,请尝试使用fprintf(stderr,"echo123\n");