![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| voffka1917 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.9.2007 Репутация: нет Всего: нет |
мне нужно написать прогу, которая
- читает текстовой файл прим. 4, 3, 1, 3, 3, 6 6, 6, 5, 2, 4, 7 4, 9, 4, 3, 3, 8, 7 9, 2, 4, 9, 8, 1, 4, 2, 1, 9, 6, 6, 5, 9, 6 3, 3, 7, 3, 2, 7, 8, 5, 8, 9, 2, 1, 1, 3, 3 10000,5000,1000,0 - кидает все числа с одной строки на stack, остальные на новые stack-и - потом записывает числа в определённом порядке (это потом) я в си новичок написал уже:
вот только в строчке
не знаю, как мне из прочитанного "int" получить чтобы можно было дальше с ним работать :( надеюсь на скорую помощь |
||||
|
|||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
ты его уже получил после переменная zahl какого типа? и что-то странные у тебя названия переменных, немецкий напоминают |
|||
|
||||
| voffka1917 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.9.2007 Репутация: нет Всего: нет |
zahl типа int
названия немецкие ;) а как тогда я увижу, что мне выдаётся число, а то printf выдаёт непонятно что :( Добавлено через 5 минут и 6 секунд просто в java привык с system.out.println на результаты смореть |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
так нужно:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| voffka1917 |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.9.2007 Репутация: нет Всего: нет |
так тоже чтото несуразное показывает :-( Добавлено через 3 минуты и 22 секунды c &:
без &:
Добавлено через 6 минут и 37 секунд пишу в eclipse на opensuse 10.2 с gcc может в компайлере пробема |
||||||||
|
|||||||||
| Mihhail |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: нет Всего: 9 |
Почему sscanf, а не fscanf?
Сравни: int sscanf(const char *buffer, const char *format[, address, ...]); int fscanf(FILE *stream, const char *format[, address, ...]); К тому же присмотрись к порядку действий: Считывается символ "4" в переменную с : c=fgetc(datei); Далие в zahl считывается уже не число, а запятая "," Добавлено в 21:12 Предлагаю упростить:
Это сообщение отредактировал(а) Mihhail - 17.9.2007, 17:04 |
|||
|
||||
| voffka1917 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.9.2007 Репутация: нет Всего: нет |
а почему в zahl считывается ";", если в if сказано что чтение без запятой??? Добавлено через 7 минут и 45 секунд
так функция будет выдавать правильно считанный результат но мне нужно чтобы мне эта функция отдавала int, а не char |
||||||
|
|||||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Это тебе только так кажется. А на самом деле ты проверяешь символ, который уже прочитал из буфера, а fscanf читает уже со следующего... -------------------- ... |
|||
|
||||
| Mihhail |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: нет Всего: 9 |
Считываем символ (при этом указатель о откратом файле смещается на следующий), если он не равен ',' выполняем считывание int значения и его печать. В zahl попадает код символа ','. |
|||
|
||||
| voffka1917 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.9.2007 Репутация: нет Всего: нет |
и как можно это исправить? очищать буфер? Добавлено через 9 минут и 3 секунды я полностью убрал if и заработало но теперь есть тиакая проблема, что 1й символ в файле перепрыгивается, а последний повторяется 2жды как мне прочитать 1й символ, чтобы не мешать потоку в "while"? |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Вообще все переделать.
Прочитать в буфер строку целиком. Разбить ее на токены, разделенные запятой. Каждую подстроку конвертировать в int. (Не очищать буфер, а возвращать туда символ. В принципе можно, но это какая-то левая метода, причем не очень эффективная.) -------------------- ... |
|||
|
||||
| voffka1917 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 17.9.2007 Репутация: нет Всего: нет |
я всё же сделал с передвижением назад, т.к не знаю как сделать построчно...
вроде работает, вот только вопрос созрел, а как же с запятыми, или же они игнорируются автоматом? Это сообщение отредактировал(а) voffka1917 - 17.9.2007, 19:38 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |