Передача массива char в файл с помощью цикла for - PullRequest
0 голосов
/ 27 апреля 2019

Я только учусь работать с файловым вводом-выводом и, возможно, я супер неправ. Мне нужно создать и записать в файл список названий городов и их плотность населения. Я могу распечатать список должным образом отформатированный в стандартном выводе, используя цикл for, но не могу записать его в файл. Как я уже сказал при использовании оператора printf, он работает просто отлично, но (fopen, "w") fprintf не работает. Куда я иду не так?

   printf("Create new file name:\n");
   scanf("%s", outfile);

   fp = fopen(outfile, "w");
   for(i=0;i<10;i++){
        fprintf("%s  %.2f\n", veg[i].name, density );
    }



    fclose(fp);

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

"Несовместимые типы указателей, передающие 'char [10]" параметру типа "FILE *" (он же "struct __sFILE *')" "

1 Ответ

1 голос
/ 27 апреля 2019

Вам нужно указать файл для записи в вызове fprintf ().fprintf(outfile,"%s %.2f\n", veg[i].name, density );

Вот документация: https://en.cppreference.com/w/c/io/fprintf

Вам также необходимо указать, была ли неудача в работе fopen.

if (fp != NULL)
{
    printf("File created successfully!\n");
}
else {
    printf("Unable to create file.\n");
    exit(EXIT_FAILURE);

}

Имейте в виду, что если вы используете Visual studio, вам придется использовать fprintf_s() вместо того, чтобы указывать размер вашей строки.

...