#c #system-calls
#c #системные вызовы
Вопрос:
Я пытаюсь записать в файл с помощью системного вызова write, путь к файлу проходит через строку cmd arg. Я получаю некоторую мусорную ценность, и я не могу понять, почему это происходит.
#include lt;stdio.hgt; #include lt;fcntl.hgt; #include lt;stdlib.hgt; #include lt;unistd.hgt; #define FOUR 4 void odd_no (int fd) { for (int i = 0; i lt; 20; i ) { if (i % 2 != 0) { write (fd, amp;i,FOUR); } } } int main (int argc, char *argv[]) { int fd; if (argc lt; 2) { printf ("Insufficient Argumentsn"); return 0; } if ((fd = open (argv[1], O_WRONLY, S_IRWXU)) != -1) { odd_no (fd); close (fd); } else { perror ("open"); exit(1); } return 0; }
Комментарии:
1. » Я получаю какую-то мусорную ценность » какие ценности вы ожидаете? Как вы определили, что значения, которые вы получаете, являются мусором? Как вы извлекли значения с помощью
read
или открыли этот файл в текстовом редакторе? Не забывайте, что вы записываете в этот файл двоичные данные, а не текст.2. Хорошо, я просто пишу вместо того, чтобы открывать в программе, которую я открываю в текстовом редакторе, но когда я записываю символ в файл, он отлично отображается в текстовом редакторе.
3. Вы записываете в файл двоичные данные, а не текст. Вы можете просмотреть это только с помощью шестнадцатеричного редактора. Вам нужен двоичный файл или текст в выходном файле?
4. Для текста, который вы хотите
fopen/fprintf