2014-01-30 2 views
2

Я должен использовать только системные вызовы для чтения и записи для c-программы. Поэтому не может использовать ничего, например printf, getc и т. Д. Так как я не могу использовать printf, для этого мне нужно использовать sprintf. Тем не менее, я не могу найти примеры того, как использовать sprintf с системными вызовами файлового ввода/вывода. Мне нужно o использовать write (....), читать (.....)Использование системных вызовов для чтения и записи с помощью sprintf

+0

'char buffer [100]; sprintf (buffer, "% d \ n", some_int); write (fd, buffer, strlen (buffer)); ' – chux

ответ

1

Файловый ввод-вывод через системные вызовы проще и работает на более низком уровне, чем вызовы на C-файл/Вывода. Использование этих системных вызовов требует заголовка файла с именем «fcntl.h»:

#include <fcntl.h> 

В "creat() "системный вызов, конечно, создает файл имеет следующий синтаксис:.

<file descriptor variable> = creat(<filename>, <protection bits>); 

ex: 

    #define RD_WR 0666 
    int fd;        /Define file descriptor. */  
    fd = creat("data", RD_WR); 

"open()" системного вызова открывает существующий файл для чтения или записи. Он имеет синтаксис

<file descriptor variable> = open(<filename>, <access mode>); 

    O_RDONLY Open for reading only. 
    O_WRONLY Open for writing only. 
    O_RDWR  Open for reading and writing. 
ex: 
    int fd; 
    fd = open("data", O_WRONLY); 

"close()" система кал Я очень прост. Все, что он делает, это "close()" открыть файл, когда нет необходимости в его доступе. Системный вызов "close()" имеет следующий синтаксис:

close(<file descriptor>); 

Системный вызов "write()" записывает данные в открытый файл. Она имеет следующий синтаксис:

write(<file descriptor>, <buffer>, <buffer length>); 
ex: 
    float array[10]; 
    ... 
    write(fd, array, sizeof(array)); 

Системный вызов "read()" считывает данные из открытого файла. Его синтаксис точно такой же, как у "write()":

read(<file descriptor>, <buffer>, <buffer length>); 
+0

Как насчет моего вопроса sprintf? –

+0

, так что вы хотите 'sprintf' для ввода файлов? 'sprintf' использовать для записи в/чтение из строк, а не файлов. Для файла используйте 'fprintf'. –

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