Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249

Неправильно читается имя файла

06.05.2015, 21:50. Показов 2263. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
 
int main()
{
    char znaki[] = {":,-!.?;\""}, path[50] = {0};
    const int nZnakov = 8;
    int statistika[nZnakov] = {0};
    ifstream fin;
 
    {
        cout << "Vvedite puti k failu s tekstom: ";
        fflush(stdin);
        cin.getline(path, 50);
        fin.open(path);
        if (!fin.is_open())
            cout << "Fail ne naiden!\n";
    } while (!fin.is_open());
    cout << "Vvedite puti k failu dlia zapisi izmenennogo texta: ";
    fflush(stdin);
    cin.getline(path, 50);
    ofstream fout(path);
 
    char ch;
    while (fin.get(ch))
        if (isupper(ch))
            fout << tolower(ch);
        else if (islower(ch))
            fout << toupper(ch);
        else
            fout << ch;
    fin.close();
    fout.close();
 
    cout << "Text perepisan!\n";
    system("pause");
    return 0;
}
20 минут назад все было норм (с другими программами, где тоже читались имена файлов), теперь черти что читается. В чем может быть проблема?
Изображения
 
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.05.2015, 21:50
Ответы с готовыми решениями:

Неправильно читается файл
Здравствуйте. Подскажите, пожалуйста. Написал программу, которая создает динамический массив длиной 189кб: BYTE *Massiv; Massiv =...

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения
На с++

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения/
C++

20
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.05.2015, 22:01
Какое, конкретно, имя?
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
06.05.2015, 22:02  [ТС]
input.txt
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.05.2015, 22:02
С кирилицей?
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
06.05.2015, 22:03  [ТС]
Нет

Добавлено через 19 секунд
Само имя уже читается неправильно
Внутри файла, если что, тоже нет кириллицы
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.05.2015, 22:05
Цитата Сообщение от Керра Посмотреть сообщение
input.txt
По скрину непохоже, что input.txt.

Добавлено через 35 секунд
Цитата Сообщение от Керра Посмотреть сообщение
Само имя уже читается неправильно
Это я понял.

Добавлено через 57 секунд
Пишет, что файл не найден, или что?
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
06.05.2015, 22:06  [ТС]
То есть как бы оно читается, подальше, но откуда эти символы если я очищала входной поток? И почему файл вообще открывается?
Миниатюры
Неправильно читается имя файла  
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
06.05.2015, 22:07  [ТС]
Цитата Сообщение от lss Посмотреть сообщение
Пишет, что файл не найден, или что?
Нет! Просто открывает какой-то непонятный файл, что-то оттуда читает, и в выходной файл выдает серию цифр
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
06.05.2015, 22:08  [ТС]
Вот.
Миниатюры
Неправильно читается имя файла  
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
06.05.2015, 22:09  [ТС]
И серия какая-то подозрительно похожая по формату. Тоже пять серий циферок через пробел, потом конец строки и еще одна серия циферок. Странно.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.05.2015, 22:11
Не нужно массив 0 заполнять, getline() сама 0 поставит.
И вот это зачем?
C++
1
fflush(stdin);
fflush(), вообще, для вывода, тем более getline() извлекает '\n' из потока.
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
06.05.2015, 22:14  [ТС]
Цитата Сообщение от lss Посмотреть сообщение
Не нужно массив 0 заполнять, getline() сама 0 поставит.
А, это уже после появления ошибки поставила. Знаю что ставит.
Цитата Сообщение от lss Посмотреть сообщение
fflush(), вообще, для вывода.
Я всегда так делаю когда застревает символ конца строки, и всегда работает
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.05.2015, 22:18
Цитата Сообщение от Керра Посмотреть сообщение
и всегда работает
int fflush ( FILE * stream );
Flush stream
If the given stream was open for writing (or if it was open for updating and the last i/o operation was an output operation) any unwritten data in its output buffer is written to the file.

If stream is a null pointer, all such streams are flushed.

In all other cases, the behavior depends on the specific library implementation. In some implementations, flushing a stream open for reading causes its input buffer to be cleared (but this is not portable expected behavior).

The stream remains open after this call.

When a file is closed, either because of a call to fclose or because the program terminates, all the buffers associated with it are automatically flushed.
Цитата Сообщение от Керра Посмотреть сообщение
Просто открывает какой-то непонятный файл, что-то оттуда читает, и в выходной файл выдает серию цифр
От темы далеко не уходи. Среда какая?
0
 Аватар для Nosey
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
06.05.2015, 22:19
Лучший ответ Сообщение было отмечено MayaNash как решение

Решение

я как раз сегодня тоже несколько удивился слудующему:
C++
1
extern int tolower (int __c) __THROW;
т.е. кастуйте к чару после tolower|up и не будете писать ascii циферки)
1
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.05.2015, 22:22
Лучший ответ Сообщение было отмечено MayaNash как решение

Решение

Цитата Сообщение от Керра Посмотреть сообщение
if (isupper(ch))
При использовании функций cctype нужно приводить параметр к unsigned char (во избежание сюрпризов).
1
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
06.05.2015, 22:26  [ТС]
Помогло, спасибо
Хотя с чтением пути все равно что-то странное...
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.05.2015, 22:27
Цитата Сообщение от lss Посмотреть сообщение
нужно приводить параметр к unsigned char
Об этом где-то сказано в документации?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.05.2015, 23:46
Цитата Сообщение от nmcf Посмотреть сообщение
Об этом где-то сказано в документации?
В стандарте:
The header <ctype.h> declares several functions useful for classifying and mapping characters. In all cases the argument is an int, the value of which shall be representable as an unsigned char or shall equal the value of the macro EOF. If the argument has any other value, the behavior is undefined.
В последнее время, на эту тему, мне много тем попадается, например:
Стандарт языка, работа со строками. Малая русская я

Добавлено через 1 минуту
Цитата Сообщение от Керра Посмотреть сообщение
Хотя с чтением пути все равно что-то странное...
Я бы его просто вывел на консоль, чтобы посмотреть как прочиталось.
Цитата Сообщение от lss Посмотреть сообщение
Среда какая?
1
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
07.05.2015, 08:24  [ТС]
Цитата Сообщение от lss Посмотреть сообщение
Среда какая?
VC++ Express 2010
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.05.2015, 09:28
Цитата Сообщение от lss Посмотреть сообщение
representable as an unsigned char
Не понятно тогда, почему строки не сделали unsigned char.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2015, 09:28
Помогаю со студенческими работами здесь

Не читается из файла
Доброго времени суток, форумчане. В общем, столкнулся с проблемой, что не выводит на экран содержимое файла. Файл открывается, но...

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

Выберите неправильно записанное имя переменной
Помогите! 1. Выберите неправильно записанное имя переменной. a) absde b) a123b_ c) abыcd1 d) __b__d

Читается только одна строка из файла
Здравствыйте. помогите разобраться, почему у меня из файла читается только одна строка? Задача: Дан текстовый файл, в который записаны...

При вводе из файла читается лишний символ
как удалить последний символ (завершающий нуль '\n') &quot;я&quot; при чтении из файла на экран?? do{ ch=getc(fp); putchar(ch); } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru