Запись в файл с помощью fprintf в c - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь записать файл в моей программе, но я не уверен, в чем я ошибаюсь.

Возможно, я неправильно использовал fscanf, что очень возможно.

Мне нужно записать неразрешенную головоломку в файл, чтобы увидеть, правильно ли я добавляю файл в свой код, но, как я уже сказал, я не уверен, правильно ли я использую fscanf.(файл головоломки находится в моем Clionfile, чтобы я знал, что это не проблема.)

Вот мой раздел моей программы, который я использую для чтения.

int read(const char *name, int **problem, int **z, int *size) {
    int n;
    int *p;
    int *c;
    FILE* input;

    input = fopen("name", "r");
    fscanf(input,"%d", &n);

    *size = n;
    p = (int *)malloc(n * n * sizeof(int)); /* nxn grid has n*n elements*/
    c = (int *)malloc(n * n * sizeof(int));
    *problem = p;
    *z = c;

    input = fopen(name, "r");
    fprintf(input, "%d\n", n);
    fclose(input);
    return 0;
}

Все, что мне нужнознаю, где я ошибся, или если моя проблема не в этом.

1 Ответ

0 голосов
/ 23 октября 2018

Я действительно не полностью следовал вашему коду, но создал версию, которая компилируется и запускается.Я добавил пару утверждений, чтобы показать, какие значения я ожидал.Я считаю это полезным, чтобы подтвердить мне, что я ожидаю от программы.Дайте мне знать, если это поможет.

#include <stdio.h>
#include <stdlib.h>
#include <itclInt.h>
#include <assert.h>


int ReadFile(const char *name, int **problem, int **z, int *size) {
    int n;
    int *p;
    int *c;
    FILE *input;
    FILE *output;

    /* Open file "name" for reading and writing */
    output = fopen(name, "w");
    assert(output != NULL);

    fprintf(output, "%d", *size);
    if(fclose(output) == EOF)
        perror ("fclose-input");

    /* Open file "name" for reading and writing */
    input = fopen(name, "r");
    assert(input != NULL);

    /* Get integer input from the file and store it in n. */
    fscanf(input, "%d", &n);
    assert(n == *size);
    if(fclose(input) == EOF)
        perror ("fclose-input");

    p = malloc(n * n * sizeof(int)); /* nxn grid has n*n elements*/
    c = malloc(n * n * sizeof(int));
    *problem = p;
    *z = c;

    input=fopen(name,"w");
    fprintf(input,"%d\n",n);
    if(fclose(input) == EOF)
        perror ("fclose-input");
    return 0 ;

}


int main() {
    int size = 5;
    int* problemIntPtr;
    int* zintPtr;

    ReadFile("name.txt", &problemIntPtr, &zintPtr, &size);
    printf("We made it!\n");
    return 0;
}
...