2012-10-14 58 views
1

我有下面的代碼在xcode中編譯好,但是當我把它傳遞給Microsoft Visual Studio時,我得到了一堆錯誤。使用函數來讀取文件

void openfile(int mapArray[MAX_HEIGHT][MAX_WIDTH], int *interest, int *dimension1, int *dimension2) 
    { 
    int counter = 0; 
    char buffer; 
    int rowss, colss; 
    *interest = 0; 

    FILE *f; 
    f = fopen(FILENAME, "r"); 
    if (f==NULL) { 
      printf("Map file could not be opened"); 
      return 0; 
    } 


    // create char array the dimensions of the map 
    fscanf(f, "%d %d" , dimension1, dimension2); 
    // printf("%d %d\n" , dimensions[0], dimensions[1]); 


    // Reads the spaces at the end of the line till the map starts 
    buffer=fgetc(f); 
    while (buffer!='*') { 
      buffer=fgetc(f); 
    } 

    // Read the txt file and print it out while storing it in a char array 
    while (buffer!=EOF) { 

      mapArray[rowss][colss]=buffer; 

      colss++; 

      // Count up the points of interest 
      if (((buffer>64)&&(buffer<90))||(buffer=='@')) { 
            counter++; 

          } 

      // resets column counter to zero after newline 
      if (buffer=='\n') { 
        colss=0; 
        rowss++; 
      } 
      buffer=fgetc(f); 
    } 

    // Closes the file 
    fclose(f); 
    *interest=counter; 

    } 

哪些部分正在創建所有錯誤? 我試圖編譯時得到這個錯誤列表

在此先感謝。

+2

發佈錯誤列表。我們可以通過這種方式更快地縮小問題範圍。 –

回答

0

我看到一些直接的問題。首先,在使用它們之前,您未初始化rowsscolss,因此它們可能包含的任何值。

其次,fgetc()返回int,以便您可以檢測文件的結尾。通過使用char來保存返回值,您打破了與標準庫的契約。

第三,如果文件名無法打開,則返回0,儘管該函數指定返回void(即無)。

毫無疑問,這些是編譯器撿到的三個錯誤,可能還有其他的錯誤,您應該在錯誤列表中添加您的問題以進行更詳盡的分析。

+0

我必須一直使用後C98或任何編譯器,因爲幾乎所有的錯誤都是由於初始化變量的位置,而不是主或函數的開頭,非常感謝您的幫助。 – user1744355