fscanf()fclose()或读取文件的退出和结束程序

时间:2017-09-20 15:40:10

标签: c file scanf fopen file-handling

以下是我的代码的一部分,它存在文件处理问题。文件打开正常,但是当我尝试读取或只是关闭文件时,我的程序退出而没有错误。我试图独立运行这个代码,它工作正常。如果有人可以帮助我指出我做错了什么,真的很感激。

    int ctrlSend(char *etherPort, uint8_t *inPayload, int payloadLen, int vlanID) 
    {
    char intName [10]; // Interface name from file
    int intVlan; // Interface VLAN from file
    printf("In ctrlSend\n");

    FILE * pFile; // File pointer
    pFile = fopen ("vlan.conf","r");

    while(!feof(pFile))
    {
      fscanf(pFile,"%s %d",intName,&intVlan)
      printf("In ctrlSend while loop");
    }


    fclose (pFile);
    return 0;
    }

UPDATE1:更新了以上代码

UPDATE2:下面的替代代码有相同的问题。

    int ctrlSend(char *etherPort, uint8_t *inPayload, int payloadLen, int vlanID) 
    {

    printf("In ctrlSend\n");

    char intName [10]; // Interface name from file
    int intVlan; // Interface VLAN from file
    FILE * pFile; // File pointer
    pFile = fopen ("vlan.conf","r");

    while (fscanf (pFile,"%s %d",intName,&intVlan) == 2)
    {
        printf("In ctrlSend while loop");
    }


    fclose (pFile);
    return 0;
    }

UPDATE3:好像文件没有打开,看着它。

2 个答案:

答案 0 :(得分:2)

执行while (!feof ...)时,每次检查是否到达文件末尾。但是,您的文件(fread?)中没有任何进展。这意味着永远不会终止。

答案 1 :(得分:0)

检查文件是否存在。打开文件后,应始终检查文件指针是否为NULL。我认为您的程序无法打开该文件,并且您正在尝试使用文件指针而不检查哪个导致未定义的行为。