Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 12:55   #1
ros.pro
Пользователь
 
Регистрация: 24.05.2011
Сообщений: 39
По умолчанию Считать информацию из файла

Доброго времени суток!
Только начал изучать Си по Кернигану. Столкнулся с проблемой чтения из файла.
Есть файл, в нем строка:
Код:
hello, i'm a text file
Получаю её так:
Код:
    FILE *fp;
    char con[256];
    
    fp = fopen("123.txt", "r");
    while(!feof(fp)){
        fscanf(fp, "%s", &con); 
        printf("%s", con);
    }
    fclose(fp);
в результате получается вот это:
Код:
hello,i'matextfile
т.е. строка без пробелов.
Понятно, что %s, отставляет только буквы и цифры...

И вот, собственно, вопрос: как вывести строку с пробелами?
ros.pro вне форума Ответить с цитированием
Старый 05.07.2011, 13:48   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Ну можно по символу прочитать:
Код:
    FILE *fp;
    char con[256];   
    fp = fopen("123.txt", "rb");
    char *c = con;
    while(!feof(fp)){
	*c++= getc(fp);
    }
    *--c =0; // Записываем терминирующий 0
    fclose(fp);
    printf ("%s", con); // Выводим всё, что прочитали из файла

Последний раз редактировалось An1ka; 05.07.2011 в 13:56.
An1ka вне форума Ответить с цитированием
Старый 05.07.2011, 13:56   #3
Nedward
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 85
По умолчанию

Цитата:
Сообщение от ros.pro Посмотреть сообщение
Доброго времени суток!
Только начал изучать Си по Кернигану. Столкнулся с проблемой чтения из файла.
Есть файл, в нем строка:
Код:
hello, i'm a text file
Получаю её так:
Код:
    FILE *fp;
    char con[256];
    
    fp = fopen("123.txt", "r");
    while(!feof(fp)){
        fscanf(fp, "%s", &con); 
        printf("%s", con);
    }
    fclose(fp);
в результате получается вот это:
Код:
hello,i'matextfile
т.е. строка без пробелов.
Понятно, что %s, отставляет только буквы и цифры...

И вот, собственно, вопрос: как вывести строку с пробелами?
Без понятия, как это делается на Си, но на C++ это выглядит примерно так:
Код:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	ifstream f("d:\\abc\\inp.txt");
	string s;
	getline(f,s);
	cout << s << endl;
}
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (c) Martin Golding

Последний раз редактировалось Nedward; 05.07.2011 в 13:59.
Nedward вне форума Ответить с цитированием
Старый 05.07.2011, 14:09   #4
ros.pro
Пользователь
 
Регистрация: 24.05.2011
Сообщений: 39
По умолчанию

2 An1ka, спасибо за ответ! А что такое терминирующий ноль?
ros.pro вне форума Ответить с цитированием
Старый 05.07.2011, 14:38   #5
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от ros.pro Посмотреть сообщение
2 An1ka, спасибо за ответ! А что такое терминирующий ноль?
Спец символ обозначающий конец строки
An1ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как извлечь информацию из файла PDF Sergius X C++ Builder 0 30.05.2011 14:17
Как считать информацию с CD\DVD? Bullterrier Общие вопросы Delphi 3 12.01.2010 00:13
Загрузить информацию из текстовго файла Mango Помощь студентам 2 05.10.2008 12:04
как считывать информацию с doc файла ar4i Общие вопросы Delphi 2 11.12.2006 12:52