Предположим, у меня есть файл SomFoo.txt, который содержит строку некоторой длины. Есть ли способы прочитать содержимое файла без использования iostream ie (fread или fgets). Я знаю размер файла.C - Прочтите файл без использования iostream
ответ
Вы говорите о C++ (где есть заголовок <iostream>
) или о С, где вы, вероятно, говорить о потоках файлов, ака FILE *
, как найти в <stdio.h>
(или, в C++, в <cstdio>
)?
В любом случае, в Unix и связанных с ним системах существует множество системных вызовов с использованием дескрипторов файлов, которые являются более низкими, чем функции потоков. Ключ, основные из которых являются:
- открыт
- близко
- чтения
- записи
- lseek
Там также большой бросок других для специальных операций (розетки, трубы , асинхронный ввод-вывод, сброс/сбор ввода-вывода, позиционирование ввода-вывода и т. д.).
Вы можете использовать встроенный код сборки внутри кода C.
Вы можете использовать память с отображением io с mmap. Ниже приведен пример чтения файла/и т.д./фетровую-релиз и напечатать его содержание:
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define handle_error(_label, _text) do { perror(_text); goto _label; } while (0)
int main(int argc, char *argv[])
{
char *addr;
int fd;
struct stat sb;
size_t length;
ssize_t s;
fd = open("/etc/fedora-release", O_RDONLY);
if (fd == -1) {
handle_error(exit_failure, "open");
}
if (fstat(fd, &sb) == -1) {
handle_error(exit_failure, "fstat");
}
length = sb.st_size;
addr = mmap(NULL, length, PROT_READ, MAP_PRIVATE, fd, 0);
if (addr == MAP_FAILED) {
handle_error(exit_failure, "mmap");
}
s = write(STDOUT_FILENO, addr, length);
if (s != length) {
if (s == -1) {
handle_error(exit_failure, "write");
}
fprintf(stderr, "partial write");
goto exit_failure;
}
exit(EXIT_SUCCESS);
exit_failure:
exit(EXIT_FAILURE);
}
отпускает простое решение:
int File_read(char *filename, char *buffer){
FILE *fp = fopen(filename, "rb"); //open the file
if (fp == NULL){
return 0; //indicate that the file does not exist
}
int length = 0;
while ((current = fgetc(fp)) != EOF){ //get one char (note return value is an int)
buffer[length] = current; //store the current char
length = length + 1; //increase length
}
fclose(fp); //close the file
return length; //no more chars, return length
}
- 1. Прочтите файл без сохранения - C
- 2. Прочтите файл .txt C++
- 3. Прочтите файл mdb (ms access) без использования ODBC
- 4. Прочтите файл и получите ключ = значение без использования java.util.Properties
- 5. C++ компоновщик, как связать файл iostream?
- 6. Файл iostream не найден
- 7. Прочтите файл Json с C#
- 8. Прочтите файл C# windows 8
- 9. C++ Прочтите файл снизу вверх
- 10. файл «iostream» не найден
- 11. удается открыть файл метаданных iostream в C++
- 12. C++ iostream - выходной файл не создается
- 13. C++ Усечение класса iostream
- 14. Есть ли способ, позволяющий функции писать на консоль, файл или буфер памяти без использования библиотеки IOStream?
- 15. Как вывести на консольное окно без iostream в C++?
- 16. Прочтите весь файл в Scala?
- 17. Прочтите файл для CRC32
- 18. Прочтите файл JSON в Objective C
- 19. Прочтите файл .csv с streamreader в C#
- 20. Прочтите txt-файл с помощью c
- 21. Прочтите CSV-файл в C# эффективно?
- 22. Прочтите файл YAML с помощью сценария C
- 23. Прочтите файл .DXF/.DWG в C#
- 24. Перегрузка iostream класса C++
- 25. C++ iostream, stringstream term
- 26. C++ iostream iostate
- 27. Прочтите Контакты без разрешения?
- 28. Преобразование двоичного IOstream в файл
- 29. Прочтите файлы Паркета из Scala без использования Spark
- 30. Прочтите изображения из папки ресурсов затмения без использования имени изображения
http://en.wikibooks.org/wiki/C_Programming/File_IO – khachik
fgetc/fgets/fread/read - это функции для чтения файла! read использует файловые дескрипторы, другие funcs используют указатели файлов. Вы говорите, что хотите использовать файловые дескрипторы вместо указателей файлов? Может быть, если вы объясните лучше - вы можете получить лучший ответ. Также укажите ОС. – Abhi
C не имеет 'iostream'. Я думаю, вам нужно редактировать свои теги. –