2016-09-28 50 views
-1
  printf("\nID #: %d",counter++); 
      fflush(stdin); 
      printf("\nEnter Menu Name: "); 
      scanf("%[^\n]s",&menus.name); 
      fflush(stdin); 
      printf("Enter what the menu made of (pork,beef,chicken): "); 
      fflush(stdin); 
      scanf("%[^\n]s",&menus.make); 
      printf("Number of Servings: "); 
      fflush(stdin); 
      scanf("%d",&menus.numserve); 
      fflush(stdin); 
      printf("Price: "); 
      scanf("%f",&menus.price); 
      fflush(stdin); 
      fwrite(&menus, 1, sizeof(menus), fp); 
      numofentrees--; 

我的問題是我想自動生成我的ID#所以我增加了它,然後我想我的文件處理讀取最後一個數字,例如我想輸入2條記錄然後我的身份證號碼應該生成1和2然後我填寫記錄我希望再次生成一個記錄,然後我的下一個ID號應該是3,但在我的程序中它會再次返回ID#1。有人可以解釋給我的感謝。我使用C語言如何自動增加文件處理號碼

+2

不要做'fflush(標準輸入)',它是一個不確定的操作調用'fflush'上只具有輸入流。 –

+1

如果您想閱讀完整行,請改用['fgets'](http://en.cppreference.com/w/c/io/fgets)。 –

+1

至於你的問題,'counter'定義在哪裏?在哪裏以及如何初始化或分配給?請創建一個[最小,**完整**和可驗證示例](http://stackoverflow.com/help/mcve)並向我們顯示。 –

回答

0

在你的引擎收錄行int counter=1;定義了一個局部變量,其壽命僅在函數調用。在下次通話時,它會再次初始化爲1。你可以把它定義爲static int counter = 1; ... –  風向標