Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог функции fgets, для строк 
V
    Опции темы
Enchance
Дата 15.11.2010, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 20.10.2009

Репутация: нет
Всего: нет



Вопрос прост.
Есть функция fgets, у нее такие параметры (char*, int, FILE*)
Мне нужна аналогичная - но с параметрами (char*, int, char*)

Назначение: если нужно вывести многострочный файл в консольном приложении, то приходится использовать такой код:

Код

#include <string.h>
#include <locale.h>

int main ()
{

    FILE *file;
    char *fname = "sample.txt";
    char result_sting[100]; //Строка в 20 символов

    file = fopen(fname,"r");

    if(file == 0)
    {
        printf("cannot open file '%s'",fname);
        return 0;
    }

    while(fgets(result_sting,sizeof(result_sting),file))
    {
        printf("%s",result_sting);
    }
    fclose(file);
    return 0;
}


А мне нужно вывести масив символов типа char*, в котором много строк. Есть ли такая функция в природе?
PM MAIL   Вверх
Dov
Дата 15.11.2010, 08:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Код
fgets(result_sting,sizeof(result_sting),stdin)



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
xvr
Дата 15.11.2010, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Enchance @  15.11.2010,  04:12 Найти цитируемый пост)
Есть ли такая функция в природе?
fread. Но размер для чтения придется определять отдельно.

PM MAIL   Вверх
borisbn
Дата 15.11.2010, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Код

sscanf( input_string,"%[^\n]", result_sting );



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Void
Дата 15.11.2010, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(Enchance @  15.11.2010,  06:12 Найти цитируемый пост)
А мне нужно вывести масив символов типа char*, в котором много строк. Есть ли такая функция в природе? 

Если у нас уже весь текст в памяти и переформатировать его не надо, зачем какие-то ещё телодвижения? Выводить всё подряд fputs.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Enchance
Дата 15.11.2010, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 20.10.2009

Репутация: нет
Всего: нет



Все, разобрался. Проблема в том была, что я даже не знал, что такое потоки.
Вот, для будующих поколений - функция, которой задаешь консольную команду, а она выводит результат (это все для нее затевалось). Вдруг понадобится кому-то.
Код


void console (char *console_command)
{
    FILE *file;
    char result_sting[100];
    file = popen(console_command, "r");
    while(fgets(result_sting,sizeof(result_sting),file))
    {
        printf("%s",result_sting);
    }
    pclose(file);
}


Это сообщение отредактировал(а) Enchance - 15.11.2010, 22:50
PM MAIL   Вверх
xvr
Дата 16.11.2010, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Enchance @  15.11.2010,  22:45 Найти цитируемый пост)
Вот, для будующих поколений - функция, которой задаешь консольную команду, а она выводит результат
Если результат нужен в stdout, то проще позвать system   smile 


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1011 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.