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

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

Восстановить пароль Регистрация
 
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
15.10.2009, 00:22     Работа со строкой #1
Помогите, пожалуйста, как сделать так, что бы:
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");
Программа брала файл из текущей папки. То есть откуда я запустил программу. Как я написал - не работает((
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,297
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
4838 / 3237 / 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
4838 / 3237 / 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
4838 / 3237 / 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
4838 / 3237 / 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++ Работа с командной строкой
Работа со строкой из файла C++
C++ <string> работа со строкой
C++ Работа с командной строкой
C++ Работа со строкой

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

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

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