Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Вопросы начинающего программиста

Ответить
Настройки темы
Вопросы начинающего программиста

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120


Конфигурация

Профиль | Отправить PM | Цитировать


Делаю такую переменную: char text[30]. А значение данной переменной должно состоять из занчений двух переменных и плюс просто текст, то есть значение переменной text как бы собирается из разных частей
Как это правильно записать??
text=var1"lalala"var2 конечно не проходит

P.S.:вопросов будет ещё много


Добавлено:

А сам разобрался: надо использовать функцию sprintf()

Админам: плиззз, не удаляйте этот топик
Я буду тут свои вопросы задавать

-------
Fortes fortuna adiuvat


Отправлено: 20:29, 29-09-2004

 

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Нужно подсчитать количество строчек в файле base.txt
я сделал это так
Код: Выделить весь код
int count()
 * * * *{
 * * * * * *FILE *base_stream=fopen("base.txt","r");
 * * * * * *char line[100];
 * * * * * *int i=0;
 * * * * * *while(fgets(line,100,base_stream))
 * * * * * *{
 * * * * * * * *i++;
 * * * * * *} * *
 * * * * * *fclose(base_stream);
 * * * * * *cout<<i; * * * * * *
 * * * *}
Всё работает, а может есть какой нибудь другой способ??
Мне это нужно для расширения кругозора

[s]Исправлено: vadimiron, 22:42 29-09-2004[/s]

-------
Fortes fortuna adiuvat


Отправлено: 00:17, 30-09-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


vadimiron
Для текстовых файлов с длинными строками Ваш метод даст ошибку.

Отправлено: 10:24, 30-09-2004 | #3


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


hasherfrog
Ну так вопрос как раз звучал:
Цитата:
а может есть какой нибудь другой способ??

А если имеется ввиду число 100, то я просто знаю, что в моём случае строчка не будет длинее ста знаков

-------
Fortes fortuna adiuvat


Отправлено: 15:03, 30-09-2004 | #4


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Например, можно найти длину файла через fseek/ftell, считать его целиком и посчитать количество '\n'. Если файл не слишко большой и памяти не слишком мало, как обычно и бывает. Даже в рекомендациях по написанию прикладных NetBSD программ утверждается, что такой метод предпочтительней построчного чтения.

Добавлено:

Это самый простой путь.

Можно читать не весь файл за раз, а кусками в буффер. В принципе, в данном случае ничуть не сложней. Хотя при более продвинутой обработке (какой-нибудь, даже примитивный, парсинг итд) это довольно неудобно.

-------
http://ivank.ru


Отправлено: 00:34, 01-10-2004 | #5


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Мне нужна такая функция, чтобы из строки вида var1***var2***var3***....  все var вытащить, так как сколько этих var там  будет я не знаю, нужно всё загонять в массив
Если кто программировал на PHP, то нужна функция explode

Есть такое решение
Код: Выделить весь код
#include <string>
void explode (char *line, char *delim)
{
    char *result=NULL;
    result=strtok(line,delim);
    while (result!=NULL)
    {
        cout<<result;
        result=strtok(NULL,delim);
    }
}
Эта функция работает и выводит все var, а как мне вместо вывода сделать присваивание очередной result новому элементу массива array
Просто изза того, что все переменные являются строками, то array будет двумерным и я путаюсь, как в этом случае присваивание очередному элементу массива array организовать

-------
Fortes fortuna adiuvat


Отправлено: 13:04, 02-10-2004 | #6


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


vadimiron
Сделай массив std::string'ов.
Или статический массив char array[x][y], если количество строк как и их длинна фиксированы (т.е. не больше x и y-1) и копируй банальным strcpy(array[[i]], result), где i - номер строки. array будет передаваться извне. А результатом будет array и n - количество считанных записей.

А лучше почитай про std::vector/std::list и std::string. С ними всё было бы гораздо проще.


[s]Исправлено: ivank, 13:07 3-10-2004[/s]

-------
http://ivank.ru


Отправлено: 13:49, 02-10-2004 | #7


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Всё со стрингом получилось
Вот так:
Код: Выделить весь код
void explode (char *line, char *delim)
{
    char *result=NULL;
    result=strtok(line,delim);
    string res[10];
    int i=0;
    while (result!=NULL)
    {
        res[i]=result;
        result=strtok(NULL,delim);
        i++;
    }
}
Теперь функция разбивает строку line вида var1***var2***var3*** на отдельные var и эти var записывает в массив res, *** в этом случае являются delim

Добавлено:

Ещё один вопрос:
Мне надо чтобы массив после его генерации в этой функции был доступен и вне даннго блока, то есть я запускаю функцию explode(line,delim); и потом вызываю поочереди все элементы массива res

Добавлено:

А сам понял, надо string res[10]; вне функции декларировать

-------
Fortes fortuna adiuvat


Отправлено: 14:08, 02-10-2004 | #8


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Как удалить определённую строчку в файле??
Работаю со стрингами и streams с++
Есть массив FILE[size], каждый элемент которого является определённой строчкой файла.
Надо удалить элемент под номером i данного массива и всё оставшееся записать обратно в файл
И i, и size известны
У меня что то это проделать не получается

-------
Fortes fortuna adiuvat


Отправлено: 15:45, 05-10-2004 | #9


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
for (i = 0; i < size; ++i)
    if (i != to_delete)
        out_file << data[i] << "\n";
i - переменная счётчика цикла. Лучше для других уелей её не применять и выбирать более значащие имена.

А FILE, если не ошибаюсь #define на внутреннию структуру в stdio.h, или просто структура, не уверен. Но главное, что лучше такоей имя не использовать, на всякий пожарный. И вообще, имена большими буквами лучше давать только константам (задефайненым или через enum).

-------
http://ivank.ru


Отправлено: 00:14, 06-10-2004 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Вопросы начинающего программиста

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] нужна помощь программиста. foxbat Программирование в *nix 0 09-11-2009 13:45
iZone для Линукса (Вопросы начинающего) Invite Общий по Linux 30 16-06-2004 14:42
Вопрос начинающего libricon Общий по Linux 11 06-04-2004 23:40
Squid для начинающего djipa Общий по Linux 6 02-12-2003 06:56
Мукулатура для начинающего Daiv Программирование и базы данных 10 17-10-2002 11:44




 
Переход