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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> считать файл 
:(
    Опции темы
cupper
Дата 11.5.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



мне нужно считать текстовый файл вида:
aaa 345
aab 45
aac 754
.....
zzz 234

таким образом чтобы символы считать например в переменну char sim;
а числа в                                                                                        int ch;
цикл вида
Код

while (пока не конец){
       //считать символы в переменную sim
       //считать число в переменную ch
       //далее их используем и по новой
}

Интересует имнно как считать символы с число
PM MAIL   Вверх
Fazil6
Дата 11.5.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Цитата(cupper @  11.5.2007,  11:46 Найти цитируемый пост)
Интересует имнно как считать символы с число

читаешь строку, по пробелу разбиваешь на 2 и потом вторую преобразуешь в число. Способов несколько от функции atoi до boost::lexical_cast
PM MAIL   Вверх
Fazil6
Дата 11.5.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Код

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


#define STR_BUF 32 
void main( )
{

    FILE *f(fopen("c:\\test", "r"));
    if(!f) return;

    char buf[STR_BUF + 1];
    while(!feof(f))
    {
        if(!fgets(buf, STR_BUF , f)) 
        {
            if(!feof(f))
            {
                printf("\n%s\n", "ERROR!");
                break;
            }
        }

        char *s = buf;
        char *сh = strchr(s, ' ');
        if(!сh) 
        {
            printf("\n%s\n", "ERROR!");
            break;
        }

        *(сh++) = '\0';
        
        int i = atoi(сh);

        printf("sim = %s   &   ch = %d\n" ,s,i);
    }
    
    
}

PM MAIL   Вверх
cupper
Дата 11.5.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо
PM MAIL   Вверх
dizzy1984
Дата 11.5.2007, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Либо так
Код

#include <Stdio.h>

void main()
{
    char szStr[3 + 1];
    int nInt;
    FILE *f = fopen("c:\\123.txt", "rb");
    while (!feof(f))
    {
        fscanf(f, "%3s %d", szStr, &nInt);
        //
    }
    fclose(f);
}

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


Опытный
**


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

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



если ты скажешь что это еще и вижл студио работает, то ето просто ваще пипец как клева )
PM MAIL   Вверх
dizzy1984
Дата 11.5.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проверял на Borland C++ 3.1 и Visual C++ 6.0
кстати забыл добавить строку
Код

if (!f) return;

после
Код

FILE *f = fopen("c:\\123.txt", "rb");


Это сообщение отредактировал(а) dizzy1984 - 11.5.2007, 13:30
PM MAIL   Вверх
Promitheus
Дата 11.5.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(dizzy1984 @  11.5.2007,  12:46 Найти цитируемый пост)
char szStr[3 + 1];


Я конечно понимаю, что черновик, но это вроде бы выделение массива под 3 элемента + 1  smile  А если 4 сразу написать прокатит ?

Файл можно сохранять в текущую папку проекта и открывать тож из текущей папки проекта.
 

cupper,  Я думаю еще много где будет работать даже в Unixe.
PM MAIL ICQ   Вверх
JackYF
Дата 11.5.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Promitheus @  11.5.2007,  13:41 Найти цитируемый пост)
А если 4 сразу написать прокатит ?

Естественно smile


<strike>
Цитата(Promitheus @  11.5.2007,  13:41 Найти цитируемый пост)
cupper,  Я думаю еще много где будет работать даже в Unixe. 

уже будет работать и в Юникс. вот только <stdio.h> лучше, все символы прописные.</strike>

Тьфу блин, неправильно прочитал цитату...


Это сообщение отредактировал(а) JackYF - 11.5.2007, 15:44


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
dizzy1984
Дата 11.5.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Promitheus @  11.5.2007,  13:41 Найти цитируемый пост)
А если 4 сразу написать прокатит

Такая запись логически вернее 4, т.к показывает смысл размерности массива.
В чистовиках я всегда пишу так же.

А что в юниксах регистр в имени файла является значимым?
И почему уже - работа над библиотекой окончена пол часа назад?

Это сообщение отредактировал(а) dizzy1984 - 11.5.2007, 15:40
PM MAIL   Вверх
JackYF
Дата 11.5.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(dizzy1984 @  11.5.2007,  15:35 Найти цитируемый пост)
А что в юниксах регистр в имени файла является значимым?


В подавляющем большинстве случаев - да. Точно не уверен, что и компилятор ищет заголовочные файл case-sensitive, но зачем делать потенциально неправильно, если можно сделать однозначно верно?



Цитата(dizzy1984 @  11.5.2007,  15:35 Найти цитируемый пост)
И почему уже - работа над библиотекой окончена пол часа назад?

Да блин, заглючило меня... Уже зачеркнул ту часть моего поста.



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

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

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

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

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


 




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


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

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