none
幫忙解釋一下,這個錯誤 RRS feed

  • 問題

  • 程式執行後,跳出一個錯誤訊息

    Debug Assertion Failed!

    File: fgetc.c
    Line: 68

    Expression: (stream != NULL)

    For information on how your program cam cause an assertion failure, see the Visual C++ documentation on asserts.

    (Press Retry debug the application)

    跳到 fget.c

    #undef getc

    int __cdecl getc (
            FILE *stream
            )
    {
            int retval=0;

            _VALIDATE_RETURN( (stream != NULL), EINVAL, EOF);  <------這一行

            _lock_str(stream);
            __try {

            _VALIDATE_STREAM_ANSI_SETRET(stream, EINVAL, retval, EOF);
                    if(retval==0)
                    {
                            retval = _getc_nolock(stream);
                    }

            }
            __finally {
                _unlock_str(stream);
            }

            return(retval);
    }
    2008年5月27日 上午 05:50

解答

  • Code Snippet

    #include   <iostream>
    #include   <cstdio>
    #include   <cstdlib>
    #include   <conio.h>

    int   main()
    {

    FILE   *fp;
    fp=NULL;
    if((fp=fopen( "c:\\data.txt ", "r "))!=NULL) 

       cout < < "文件讀取正確 ";
    else
        exit(0);

     
    //  fp 不等於 NULL 才會 執行 下列程式碼
     
    char   ch=fgetc(fp);
    while(ch!=EOF)   //用來循環讀取文件的內容。
    {
    putchar(ch);
    ch=fgetc(fp);
    }
    fclose(fp);

    return   0;
    }
     
     


     

     

     

    2008年5月27日 上午 06:43

所有回覆

  • 相同的 錯誤 重複問  @@

    http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3382335&SiteID=14

     

     

    都是  File Handle 等於  NULL  的問題
    2008年5月27日 上午 06:30


  • 我不知道是一樣的問題 sorry

    但是,上一篇還是沒有給我解決的方法呀
    2008年5月27日 上午 06:37
  • Code Snippet

    #include   <iostream>
    #include   <cstdio>
    #include   <cstdlib>
    #include   <conio.h>

    int   main()
    {

    FILE   *fp;
    fp=NULL;
    if((fp=fopen( "c:\\data.txt ", "r "))!=NULL) 

       cout < < "文件讀取正確 ";
    else
        exit(0);

     
    //  fp 不等於 NULL 才會 執行 下列程式碼
     
    char   ch=fgetc(fp);
    while(ch!=EOF)   //用來循環讀取文件的內容。
    {
    putchar(ch);
    ch=fgetc(fp);
    }
    fclose(fp);

    return   0;
    }
     
     


     

     

     

    2008年5月27日 上午 06:43