Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

15.10.2009, 00:22. Просмотров 871. Ответов 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");
Программа брала файл из текущей папки. То есть откуда я запустил программу. Как я написал - не работает((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2009, 00:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа со строкой (C++):

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

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

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

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

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

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

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

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

А вот эта штука "" это символ \0, то есть имеет тип char к char* к char привести не удаётся.
Это первое замечание.
1
Неумейка
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”. Будь внимателен.
1
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
15.10.2009, 04:33 #4
C++
1
    if (*in == '\0')
1
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 и ничего не ввел, то присвоить значение по умолчанию.?
0
Неумейка
12 / 11 / 2
Регистрация: 14.02.2009
Сообщений: 89
15.10.2009, 23:56 #6
Цитата Сообщение от GRANDEATH Посмотреть сообщение
Так нифига не рабоает.
У меня все работает. Показывайте весь код, как вы делаете.
0
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 посадил...
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
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;
}
1
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);    // Завершение программы 
    }
Вот он файл не видит.
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
16.10.2009, 10:45 #10
они может в разных папках, надо сделать копию или записать полный путь в программе

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

Работа с командной строкой - C++
Нужно встроить в программу код для перекодировки звукового файла из wav во flac. Для этого взял CUETools. Я не знаю как вызывать консольное...

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

Работа с символьной строкой - C++
1) Ввести с клавиатуры символьную строку, состоящую из десятичных цифр и символа '.' (точка :)) Длина строки не более 80 символов....

Работа с командной строкой - C++
Как записать файл в командную срока и оттуда считывать этот файл?


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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