彈出警告Microsoft Visual C++ Debug Library fgets.c 報錯解決辦法


Microsoft Visual C++ Debug Library 

Program:C:\WINDOWS\system32\PicsUU.scr
File:fgets.c 
Line:60  

Expression:str !=NULL 

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

(Press Retry to debug the application)

經檢發現是函數讀寫文件的錯誤,報錯代碼如下

void NONO()
{/* 本函數用於打開文件,輸入數據,調用函數,輸出數據,關閉文件。 */
  FILE *fp, *wf ;
  int i;  long r;
  char s[10], *p;

  fp = fopen("c:\\test\\in.dat","r") ;
  wf = fopen("c:\\test\\out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fgets(s, 10, fp);
    p = strchr(s, '\n');
    if (p) *p = 0;
    r = fun(s);
    fprintf(wf, "%ld\n", r);
  }
  fclose(fp) ;
  fclose(wf) ;
}

發現是文件的打開也就是fopen里面的路徑錯誤

因此找到文件in.dat和out.dat改成正確的路徑

void NONO()
{/* 本函數用於打開文件,輸入數據,調用函數,輸出數據,關閉文件。 */
  FILE *fp, *wf ;
  int i;  long r;
  char s[10], *p;

  fp = fopen("C:\\EXAM\\00000000\\prog1\\in.dat","r") ;
  wf = fopen("C:\\EXAM\\00000000\\prog1\\out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fgets(s, 10, fp);
    p = strchr(s, '\n');
    if (p) *p = 0;
    r = fun(s);
    fprintf(wf, "%ld\n", r);
  }
  fclose(fp) ;
  fclose(wf) ;
}

或者修改成相對路徑

void NONO()
{/* 本函數用於打開文件,輸入數據,調用函數,輸出數據,關閉文件。 */
  FILE *fp, *wf ;
  int i;  long r;
  char s[10], *p;

  fp = fopen("..\\in.dat","r") ;
  wf = fopen("..\\out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fgets(s, 10, fp);
    p = strchr(s, '\n');
    if (p) *p = 0;
    r = fun(s);
    fprintf(wf, "%ld\n", r);
  }
  fclose(fp) ;
  fclose(wf) ;
}

如此程序不會報Microsoft Visual C++ Debug Library fgets.c錯

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM