Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
#1

Работа со строкой - C++

15.10.2009, 00:22. Просмотров 858. Ответов 12
Метки нет (Все метки)

Помогите, пожалуйста, как сделать так, что бы:
C++
1
2
3
4
5
cout << "Раскодирование файла. Введите исходный файл[out.txt]>";
        
char in[MAX_STRING_LENGTH];
cin >> in;
if ( in == "") strcpy(in,"out.txt");
Программа запрашивает строчку, если пользователь не ввел ничего, то строке присвоить out.txt. Сделал вот так, но конечно не работает.
Заранее спасибо. И ещё вопрос - как сделать, что бы при вызове
C++
1
File.open("in.txt");
Программа брала файл из текущей папки. То есть откуда я запустил программу. Как я написал - не работает((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2009, 00:22     Работа со строкой
Посмотрите здесь:

Работа со строкой - C++
Работа со строкой

Работа со строкой - C++
Задача: Запнулся над забиванием пробелами между словами. Что уже есть: #include &lt;iostream&gt; using namespace std; //...

работа со строкой - C++
ПОМОГИТЕ пожалуйста Необходимо написать программу в C++ которая находила бы максимальное число в строке которое содержит слова и числа...

Работа со строкой - C++
Помогите, что нибудь из этого сделать! 1.Напечатать первое слово, содержащее 2 подряд заданных символа 2. Посчитать количество слов в...

Работа со строкой - C++
Написать прогу которая переварачивает слова в строке s

Работа со строкой из файла - C++
Словом текста считается любая последовательность цифр и букв русского алфавита длиной не более 6 символов; между соседними словами - не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
15.10.2009, 01:39     Работа со строкой #2
Почему не пишешь ошибки, которые находит компилятор?!
Хотя я их и так вижу.
Скорее всего, он пишет, что невозможно переконвертировать тип char в тип char*

То есть. Ты пишешь
C++
1
( in == "")
А "in" содержит адрес нулевого элемента, то есть это указатель на него, то есть char*

А вот эта штука "" это символ \0, то есть имеет тип char к char* к char привести не удаётся.
Это первое замечание.
Неумейка
12 / 11 / 2
Регистрация: 14.02.2009
Сообщений: 89
15.10.2009, 02:08     Работа со строкой #3
Делай так:
C++
1
2
3
char in[MAX_STRING_LENGTH];
gets(in);
if (!strlen(in)) strcpy(in,"out.txt");
А файл не открывается потому что его там нет, ты скорей всего сунул его в папку с проектом, но вот только сам .ехе компилятор создает в папке “ debug”. Будь внимателен.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.10.2009, 04:33     Работа со строкой #4
C++
1
    if (*in == '\0')
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
15.10.2009, 23:45  [ТС]     Работа со строкой #5
Цитата Сообщение от Неумейка Посмотреть сообщение
Делай так:
C++
1
2
3
char in[MAX_STRING_LENGTH];
gets(in);
if (!strlen(in)) strcpy(in,"out.txt");
А файл не открывается потому что его там нет, ты скорей всего сунул его в папку с проектом, но вот только сам .ехе компилятор создает в папке “ debug”. Будь внимателен.
Так нифига не рабоает. Она сразу присваивает in значение "out.txt" и не дает вводить...
Файл вроде в debug... Хм.. Ладно посмотрю...

Добавлено через 2 минуты
Цитата Сообщение от kravam Посмотреть сообщение
Почему не пишешь ошибки, которые находит компилятор?!
Хотя я их и так вижу.
Скорее всего, он пишет, что невозможно переконвертировать тип char в тип char*

То есть. Ты пишешь
C++
1
( in == "")
А "in" содержит адрес нулевого элемента, то есть это указатель на него, то есть char*

А вот эта штука "" это символ \0, то есть имеет тип char к char* к char привести не удаётся.
Это первое замечание.
Полносью согласен. Но вопрос - как ввести пустую строку, то есть если пользователь нажал enter и ничего не ввел, то присвоить значение по умолчанию.?
Неумейка
12 / 11 / 2
Регистрация: 14.02.2009
Сообщений: 89
15.10.2009, 23:56     Работа со строкой #6
Цитата Сообщение от GRANDEATH Посмотреть сообщение
Так нифига не рабоает.
У меня все работает. Показывайте весь код, как вы делаете.
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
16.10.2009, 00:01  [ТС]     Работа со строкой #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cout << "Кодирование файла. Введите исходный файл[in.txt]>";
        
        char in[MAX_STRING_LENGTH];
        gets(in);
        gets(in);
        if (!strlen(in)) strcpy(in,"in.txt");
 
        
        
        cout << "Введите конечный файл[out.txt]>";
        
        char out[MAX_STRING_LENGTH];
        gets(out);
        if (!strlen(out)) strcpy(out,"out.txt");
Вот так работает... Дважды gets посадил...
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.10.2009, 06:31     Работа со строкой #8
ну, без C не обошлось, раз у тебя всё вперемешку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main(void)
{
    char line[100];
    
    cin.getline(line, sizeof line);
    
    if (!*line)
        strcpy(line, "filename");
        
    cout << line << endl;    
    
    return 0;
}
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
16.10.2009, 09:29  [ТС]     Работа со строкой #9
Спасибо спасибо)) Но и gets(); gets(); Работает)) Не буду менять.. Но спасибо за ответ..Касательно файлов - они лежат в папке debug.. Когда запускаю файл - вре работает( файлы находит). Когда отлаживаю - не видит. Что сдалать?
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define CODE_TABLE_NAME "table.txt"
 
...
 
ifstream tableFile;      // Входной файловый поток 
    // Открыть файл source и связать его с потоком inFile: 
    tableFile.open(CODE_TABLE_NAME);
    
    if (!tableFile)     // Проверить правильность открытия файла 
    { 
        cerr << "\nОшибка при открытии файла " << CODE_TABLE_NAME;
        exit(1);    // Завершение программы 
    }
Вот он файл не видит.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.10.2009, 10:45     Работа со строкой #10
они может в разных папках, надо сделать копию или записать полный путь в программе

есть функция fgets, но у неё надо будет вырезать перевод строки в конце
есть scanf, там можно не вырезать перевод строки, но нужно прочитать его после строки, чтобы он не висел
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
16.10.2009, 11:16  [ТС]     Работа со строкой #11
А без полного пути и с отладкой.. Visual Studio хранит файл в debug.. Там я и храню мой файлы. Может стоит указать что-то в настройках деббагера, что бы он рассматривал папку debug, что по идее он должен делать по умолчанию?
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.10.2009, 11:47     Работа со строкой #12
попробуй вывести во время отладки
C
1
    system("pwd"); /* или dir */
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2009, 21:27     Работа со строкой
Еще ссылки по теме:

Работа с командной строкой... - C++
Помогите использовать возможности командной строки в с++. Задание такое- ввести 200 случайных чисел, записать их в текстовый файл, и этот...

<string> работа со строкой - C++
Добрый день, уважаемы формучане. Не очень силен в работе со строками. Надеюсь на Вашу помощь. Допустим у меня есть некая строка: string...

Работа с командной строкой - C++
Здравствуйте. Хочу проверить изменялось ли имя exeшного файла .запускаю из командной строки и прописываю весь путь ...

Работа с командной строкой - C++
Здравствуйте! Не подскажите как можно работать с командной строкой в си++? Я имею ввиду через компилятор передавать команды в командную...


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

Или воспользуйтесь поиском по форуму:
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
17.10.2009, 21:27  [ТС]     Работа со строкой #13
Все в порядке.. помогло... Я оказывается не туда запихнул файлы... Там ДВЕ папки debug
Yandex
Объявления
17.10.2009, 21:27     Работа со строкой
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru