Функция fprintf () в C не работает должным образом - PullRequest
0 голосов
/ 30 июня 2018

Я написал этот код для ввода числа от пользователя и вывода его в файл. Но он не работает, после выполнения кода файл output.txt все еще пуст. Пожалуйста, скажите мне, где я поступил неправильно. Я заверяю, что создал файл output.txt перед запуском программы, поэтому указатель файла не будет NULL.

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
FILE *ptr;ptr=fopen("output.txt","rw");
if(ptr==NULL){printf("Error in oppening file aborting .......");exit(0);}
char ch[100];
scanf("%s",ch);
fprintf(ptr,"%s",ch);
fclose(ptr);
return 0;
}

1 Ответ

0 голосов
/ 01 июля 2018

Из fopen документации , поддерживаются следующие режимы доступа:

"r" read: Открыть файл для операций ввода. Файл должен существовать.

Запись "w": создать пустой файл для операций вывода. Если файл с такое же имя уже существует, его содержимое отбрасывается и файл рассматривается как новый пустой файл.

«a» append: Открыть файл для вывода в конце файла. Выход Операции всегда записывают данные в конец файла, расширяя его. Операции изменения положения (fseek, fsetpos, rewind) игнорируются. Файл создается, если он не существует. "r +" чтение / обновление: открыть файл для обновления (как для ввода, так и для вывода). Файл должен существовать.

"w +" запись / обновление: создайте пустой файл и откройте его для обновления (оба для ввода и вывода). Если файл с таким именем уже существует, его содержимое отбрасывается, и файл обрабатывается как новый пустой файл.

«+» добавление / обновление: открыть файл для обновления (как для ввода, так и для вывода) со всеми выходными операциями записи данных в конец файла. Операции изменения положения (fseek, fsetpos, rewind) влияют на следующее операции ввода, но операции вывода перемещают позицию обратно в конец файла. Файл создается, если он не существует.

В вашем коде вы используете "rw", что недопустимо, и именно поэтому ваша программа не работает.

Измените «rw» на «w», и ваша программа будет работать. Обратите внимание, что вам не нужно создавать output.txt, fopen создаст его для вас, если у вашего текущего пользователя есть права на запись в каталог программы.

...