Отправляет email-рассылки с помощью сервиса Sendsay

Програмирование в Linux на C++

Доброго времени суток!!
Вопрос как в Linux'e пользоваться оператором read, open, fopen.То есть их синтаксис,
иесли можете приведите текст рабочей программы.
Заранее благодарен!

Ответить   "Soft-Drom" Fri, 6 Jan 2006 20:25:45 +0300 (MSK) (#497976)

 

Ответы:

6 января 2006 20:25 | Soft-Drom:

read(), open() и fopen() - это не C++, это C. В C++ стоит изучить потоковые
классы ({f,if,of}stream и прочие) и использовать только их. Плюс к этому,
read, open и fopen - не операторы, а функции. По ним можно почитать

man 2 read
man 2 open
man 3 fopen

Ответить   Roman I Khimov Fri, 6 Jan 2006 20:34:03 +0300 (#497982)

 

i586-PoltawerKozak-linux-gnu)

On Fri, 6 Jan 2006 20:34:03 +0300
Roman I Khimov <rik@o*****.info> wrote:

а также

man 2 intro
man 3 intro

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 23532; Возраст листа: 898; Участников: 1471
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/498652

Ответить   Sun, 8 Jan 2006 03:23:58 +0200 (#498652)

 

On Fri, 6 Jan 2006 20:25:45 +0300 (MSK)
"Soft-Drom" <Soft-Drom@y*****.ru> wrote:

А ман не поможет отцу русской демократии? Обычно там и примерчики бывают, если
что-то хитрое. Также см. мой пост про трубопроводы.

Ответить   Matvey Fri, 6 Jan 2006 19:40:54 +0200 (#497984)

 

Не множко по шевелив мозгами я на писал это:
#include <stdio.h>
#define STRLEN 80 // Длина строки

void main( void )
{
FILE *file; // Объявляем указатель на файл
char string[STRLEN]; // Массив на STRLEN символов

file = fopen("sample.txt","w");

// Записываем строку в файл
fprintf(file,"ЛАЛАЛАЛАЛАЛАЛАЛАЛАЛАЛАЛА\n.");

fclose(file); // Закрываем файл

// Открываем текстовый файл для чтения
file = fopen("sample.txt","r");

// Читаем из файла строку
fgets(string,STRLEN,file);

// Закрываем файл
fclose(file);

// Выводим строку на экран
printf("%s\n",string);
}
НО это считывает только превую строку может подскажете как сделать так что бы
считывальсь все строки файла.
Заранее благодарен!!!!!!!

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 23490; Возраст листа: 896; Участников: 1474
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/498042

Ответить   "Soft-Drom" Fri, 6 Jan 2006 22:07:50 +0300 (MSK) (#498042)

 

6 января 2006 22:07 | Soft-Drom:

Открыли и обнулили файл, записали одну строчку.

Открыли файл, прочитали одну строчку.

А других строчек в файле и нет! :) Вы ж туда одну пишете? Вот и имеете одну.

Другое дело, что даже если их было бы несколько, прочитали бы Вы все равно
одну, поскольку алгоритм у Вас такой в программе описан. А можно сделать
цикл, в котором последовательно читать и выводить строчки до тех пор, пока
не

fgets() return NULL on error or when end of file occurs while no characters
have been read.

Я намеренно не пишу кода, думаю, Вы сами с удовольствием в этом разберетесь.

И советую притарить все-таки какую-нибудь хорошую книжку по C (ну или
поискать в Сети). :) Или попробовать начать программировать на более
высокоуровневых и менее запутанных языках, тот же Python, например.

Собственно, здесь это уже даже маленько оффтопик, это начала
программирования (и даже не специфичные относительно ОС), есть
соответствующие листы. :)

Ответить   Roman I Khimov Fri, 6 Jan 2006 23:24:01 +0300 (#498083)

 

On Fri, 6 Jan 2006 22:07:50 +0300 (MSK)
Soft-Drom wrote:

Я не силе в C, но

1) циклы еще никто не отменял.
2) это вопрос скорее для конференции по С, а не по linux. Разве
функции stdio имеют значительные отличия в разных ОС?

и наконец,
3) это был код на C, а не на C++. В С++ другая система ввода-вывода.

Ответить   Fri, 6 Jan 2006 23:19:28 +0300 (#498115)

 

On Fri, 6 Jan 2006 22:07:50 +0300 (MSK)
"Soft-Drom" <Soft-Drom@y*****.ru> wrote:

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 23503; Возраст листа: 897; Участников: 1474
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/498133

Ответить   karlson Fri, 6 Jan 2006 22:38:13 +0300 (#498133)

 

while(fgets(string,STRLEN,file))
вроде так

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 23504; Возраст листа: 897; Участников: 1474
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/498134

Ответить   karlson Fri, 6 Jan 2006 22:32:29 +0300 (#498134)

 

В сообщении от 1136578070 секунд после начала Эпохи Soft-Drom написал(а):

while (fgets(string,STRLEN,file)) {
// Выводим строку на экран
printf("%s",string);
}

бы

Ответить   Konstantin Korikov Fri, 6 Jan 2006 23:03:33 +0200 (#498148)

 

while(fgets(string,STRLEN,file))
вроде так

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 23505; Возраст листа: 897; Участников: 1474
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/498136

Ответить   karlson Fri, 6 Jan 2006 22:37:41 +0300 (#498136)

 

while(fgets(string,STRLEN,file))
вроде так

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 23499; Возраст листа: 896; Участников: 1474
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/498096

Ответить   karlson Fri, 6 Jan 2006 22:41:19 +0300 (#498096)