39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
1

Работа со строкой

15.10.2009, 00:22. Показов 1014. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2009, 00:22
Ответы с готовыми решениями:

Работа с файлами, чтение/работа со строкой
Доброго времени суток. Начал работать с C++ Builder 6. Есть текстовый файл .txt с различными...

Работа со строкой
Есть строка String^str = &quot;123.456.5.23&quot;; как из этой строки вырвать 123 456 5 23 ...

Работа со строкой
Всем доброго дня! Подскажите такой вопрос. пока не могу разобраться. Есть входная строка - Иванов...

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

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

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

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

есть функция fgets, но у неё надо будет вырезать перевод строки в конце
есть scanf, там можно не вырезать перевод строки, но нужно прочитать его после строки, чтобы он не висел
0
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
16.10.2009, 11:16  [ТС] 11
А без полного пути и с отладкой.. Visual Studio хранит файл в debug.. Там я и храню мой файлы. Может стоит указать что-то в настройках деббагера, что бы он рассматривал папку debug, что по идее он должен делать по умолчанию?
0
4854 / 3275 / 467
Регистрация: 10.12.2008
Сообщений: 10,570
17.10.2009, 11:47 12
попробуй вывести во время отладки
C
1
    system("pwd"); /* или dir */
1
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
17.10.2009, 21:27  [ТС] 13
Все в порядке.. помогло... Я оказывается не туда запихнул файлы... Там ДВЕ папки debug
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2009, 21:27

Помощь в написании контрольных, курсовых и дипломных работ здесь.

работа со строкой
Уже все мозги пропарил 2 день, не могу сообразить((( В общем стала такая задача... Пишу игру,...

Работа со строкой
Добрый день! Есть строка вида: Windows &quot;Seven&quot;. Как вырезать текст между кавычками (&quot;&quot;)? Т.е....

Работа со строкой
Ребята подскажите, как можно реализовать изменение части строки, если это возможно на С#....

Работа со строкой
Добрый вечер, мне нужно перевести следующую строчку с C# на Java: switch (s.Text) Думаю всем...


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

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

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