2015-08-09 2 views
-3

C - fprintf не пишет в файл, любая идея почему?C - fprintf не пишет в файл

#include <stdio.h> 
#include <stdlib.h> 
int main(void){ 
    FILE* pfile=fopen("/home/user-vlad/Programming/C-other/meme.txt","r"); 
    if(pfile==NULL){ 
     printf("ERROR: Stream is equal to NULL\n"); 
     exit(1); 
    } 
    fprintf(pfile,"Hello"); 
    fclose(pfile); 
    return 0; 
} 

Компилятор: лязг, ОС: FreeBSD

+4

Вы только открыли файл для чтения. Прочитайте [справочную страницу для 'fopen'] (http://man7.org/linux/man-pages/man3/fopen.3.html) и что означает второй аргумент. «R» означает, что вы хотите читать только. Существуют варианты для записи, добавления и т. Д. – lurker

+0

, когда возникает ошибка fopen (pfile is NULL), используйте «perror()» <прочитать man-страницу perror()>, потому что тогда системное сообщение об ошибке будет добавлено к текст, который вы разместили в двойных кавычках между parens. И.Е. perror ("fopen fo meme.txt не удалось"); – user3629249

ответ

2

Предполагая, что файл открывается может быть потому, что вы назвали fopen() с аргументом "r", это означает, что читать.

Для записи вы можете использовать аргумент "w"

fopen("/home/user-vlad/Programming/C-other/meme.txt","w"); 

Или, если файл уже существует "r+"

fopen("/home/user-vlad/Programming/C-other/meme.txt","r+"); 

Или, если файл уже существует, и вы хотите добавить Вы можете использовать "a"

fopen("/home/user-vlad/Programming/C-other/meme.txt","a"); 

Вы можете узнать mor e на fopen()here.

+0

нет, файл уже существует. Я просто хочу, чтобы fprintf записывал в уже существующий файл. –

+0

@CIAAbigguy Тогда вы можете использовать '' r + "' – wallek876

+0

Хотя запись нового файла и печать на него действительно работают –

Смежные вопросы