使用函数读入文件

时间:2012-10-14 04:53:54

标签: c file-io

我有下面的代码在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;

    }

哪些部分正在创建所有错误? 我在尝试编译时得到了这个错误列表

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

其次,fgetc()返回int,以便您可以检测文件结尾。通过使用char来保存返回值,您将违反与标准库的合同。

第三,如果文件名无法打开,则返回0,尽管指定函数返回void(即没有)。

毫无疑问,这些是编译器选择的三个错误,可能还有其他错误,您应该将错误列表与您的问题一起发布,以进行更详尽的分析。