2015-10-05 2 views
1

Я начинающий программист, работающий над проектом, который требует, чтобы мой код читал символы из входного файла, манипулировал ими без изменения исходного файла, а затем распечатывал измененную версию в выходной файл. Для этого мне нужно использовать функцию fopen() в какой-то момент в программе, но мне любопытно: что на самом деле происходит здесь? Содержимое содержимого входного файла копируется в переменную input1?Что делает функция fopen(), когда я назначаю ее переменной?

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    FILE *input1; 

    input1 = fopen(argv[1], "r"); 

    return 0; 
} 
+0

Нет, он просто открывает файл для чтения, чтобы скопировать использование контента 'fread' или' fgets' и не забудьте 'fclose' в конце. –

+1

Пожалуйста, прочитайте C-книгу или учебник. Они ответят на ваш вопрос и многое другое, с чем вы столкнетесь. Правила здесь требуют, чтобы вы сделали некоторые исследования самостоятельно, прежде чем спрашивать здесь. – Olaf

+0

FYI, некоторые [стандартные библиотеки C] (https://en.wikipedia.org/wiki/C_standard_library) являются [бесплатное программное обеспечение] (https://en.wikipedia.org/wiki/Free_software), например. [musl-libc] (http://musl-libc.org/) (или GNU ['libc'] (http://www.gnu.org/software/libc/)) для Linux (который я рекомендую использовать, при обучении C). Вы можете изучить их исходный код. Они построены выше [syscalls] (https://en.wikipedia.org/wiki/System_call) –

ответ

4

Возвращаемое значение fopen() файл ручка, которая, как знак того, что вы можете использовать позже для взаимодействия с файлом. Вы можете передать input1 функции, такой как fgets() или fread(), в зависимости от того, что вы хотите сделать с этим файлом.

Содержимое файла не копируется нигде на fopen().

+3

Технически 'fopen()' возвращает указатель на (адрес) переменной типа 'FILE'. – alk

+0

@alk: Да, это правда, но для начинающего программиста, вероятно, стоит не бросать в него слово« указатель », если вы можете его избежать.' ФАЙЛ 'все равно непрозрачный, поэтому указатель не указывает на что-либо полезное. –

+1

Я согласен с тем, что члены 'FILE' не представляют интереса, однако, если вы идете в C, есть ** нет ** пути вокруг указателей, так что смейте трогать их как можно скорее. – alk

1

Функция fopen открывает поток для ввода-вывода для имени файла и возвращает указатель на поток. так, в своем заявлении:

input1 = fopen(argv[1], "r"); 

Еореп() открывает файл ARGV [1] для чтения и адрес, возвращаемый функцией назначается input1.This не предполагает копирование содержимого файла.

вы можете использовать указатель файла для чтения данных из file.for например: обработка

char c = getc(input1); 
Смежные вопросы