Fprintf没有将数据打印到文件

时间:2019-04-03 19:17:55

标签: c

我正在尝试获取我的arr数组中的数据以打印到文件“ out.txt”。该程序以前可以执行此操作,但是由于某种原因,现在根本无法打印,即使撤消到以前的版本后也无法打印。

我有适当的代码来证明文件已成功打开并且数组中的数据正确。所有其他功能均正常工作。

int main () {

    FILE *inFile;
    FILE *outFile;
    int n = 0;

    inFile = fopen("in.txt", "r");

    if (inFile == NULL) {
        printf("File failed to open");
    }
    outFile = fopen("out.txt", "w");

    if (outFile == NULL) {
        printf("outFile failed to open");
    }

    fscanf(inFile, "%d", &n);

    struct Point* arr;
    arr = (struct Point*) malloc (n * sizeof(struct Point));
    int i = 0;


    while (i<n){
        fscanf(inFile, "%d %d", &arr[i].x, &arr[i].y);
        i++;
    }

    mergeSort(arr, 0, n-1);

    fprintf(outFile, "%d\n", n);

    for (int i = 0; i<n; i++){
        printf("%d %d\n", arr[i].x, arr[i].y);
    }

    for (int i = 0; i<n; i++){
        fprintf(outFile, "%d %d\n", arr[i].x, arr[i].y);
    }

    printf("\nSorted and output written to File\n");

    int searchx, searchy;

    printf("Please enter a point to search for:  ");
    scanf("%d %d", &searchx, &searchy);

    int result = 0;

    result = binarySearch(arr, searchx, searchy,0, n);

    if (result == -1) {
        printf("Point not found");
        return 0;
    }
    else {
        printf("Point found in element %d", result);
    }
    fclose(inFile);
    fclose(outFile);
}

带有样本输入的预期结果。 In.txt:

5
6 3
4 6
2 5
2 7
5 2 

out.txt:

5
2 5
2 7
4 6
5 2
6 3

实际结果: out.txt:

//Blank

1 个答案:

答案 0 :(得分:0)

该代码在我的Mac上可以正常运行,至少在带有mergeSort注释的情况下。您不是在Windows上运行,是吗?如果是这样,该文件可能看起来为空,因为它缺少回车符。