предупреждение: передача аргумента 1 'fprintf' из несовместимого типа указателя - PullRequest
0 голосов
/ 09 июля 2020
warning: passing argument 1 of 'fprintf' from incompatible pointer type 
warning: passing argument 2 of 'fprintf' makes pointer from integer without a cast

Как исправить эти два предупреждения? Я не могу создать файл с ожидаемым результатом.

int main(int argc, char* argv[])
{
    int num_values = strtoul(argv[1], NULL, 10);
    value_t* pValues = generate_sequence(num_values);

    randomize_sequence(pValues, num_values);

    // Record results
    //FILE *fd = fopen("/results.txt", "w+");
    for (int i = 0; i < num_values; i++) { //change made: i++ to allow looping
        fprintf("results.txt", i, pValues[i]); //changes made: "fprintf". i and fd were added to the argument
    }
    //fclose(fd); //change made: "fclose"

    return EXIT_SUCCESS;
}

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

Первым аргументом для fprintf должен быть FILE*, возвращаемый при вызове fopen.

Второй аргумент - это строка формата. Любые дополнительные аргументы вставляются в заполнители в строке формата.

Рекомендуем прочитать страницу руководства , чтобы лучше понять стандартные функции библиотеки.

0 голосов
/ 09 июля 2020

Общий синтаксис для fprintf():

int fprintf(FILE *stream, const char *format, ...)

Где первый аргумент FILE *stream требует указателя файла, который должен быть открыт для работы с использованием

FILE *fptr = fopen("results.txt", "w");

функция.

Итак, пожалуйста, раскомментируйте строку № 54 и 58, затем внутри l oop измените fprintf("results.txt", i, pValues[i]) на fprintf(fd, "%d", pValues[i]).

Также узнайте о Основах обработки файлов в C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...