|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Вопросы начинающего программиста |
|
|
Вопросы начинающего программиста
|
Ветеран Сообщения: 1864 |
Профиль | Отправить PM | Цитировать Делаю такую переменную: char text[30]. А значение данной переменной должно состоять из занчений двух переменных и плюс просто текст, то есть значение переменной text как бы собирается из разных частей
Как это правильно записать?? text=var1"lalala"var2 конечно не проходит P.S.:вопросов будет ещё много Добавлено: А сам разобрался: надо использовать функцию sprintf() Админам: плиззз, не удаляйте этот топик Я буду тут свои вопросы задавать |
|
------- Отправлено: 20:29, 29-09-2004 |
Ветеран Сообщения: 1864
|
Профиль | Отправить 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] |
------- Отправлено: 00:17, 30-09-2004 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать vadimiron
Для текстовых файлов с длинными строками Ваш метод даст ошибку. |
Отправлено: 10:24, 30-09-2004 | #3 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать hasherfrog
Ну так вопрос как раз звучал: Цитата:
А если имеется ввиду число 100, то я просто знаю, что в моём случае строчка не будет длинее ста знаков |
|
------- Отправлено: 15:03, 30-09-2004 | #4 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Например, можно найти длину файла через fseek/ftell, считать его целиком и посчитать количество '\n'. Если файл не слишко большой и памяти не слишком мало, как обычно и бывает. Даже в рекомендациях по написанию прикладных NetBSD программ утверждается, что такой метод предпочтительней построчного чтения.
Добавлено: Это самый простой путь. Можно читать не весь файл за раз, а кусками в буффер. В принципе, в данном случае ничуть не сложней. Хотя при более продвинутой обработке (какой-нибудь, даже примитивный, парсинг итд) это довольно неудобно. |
|
------- Отправлено: 00:34, 01-10-2004 | #5 |
Ветеран Сообщения: 1864
|
Профиль | Отправить 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); } } Просто изза того, что все переменные являются строками, то array будет двумерным и я путаюсь, как в этом случае присваивание очередному элементу массива array организовать |
------- Отправлено: 13:04, 02-10-2004 | #6 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить 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] |
------- Отправлено: 13:49, 02-10-2004 | #7 |
Ветеран Сообщения: 1864
|
Профиль | Отправить 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++; } } Добавлено: Ещё один вопрос: Мне надо чтобы массив после его генерации в этой функции был доступен и вне даннго блока, то есть я запускаю функцию explode(line,delim); и потом вызываю поочереди все элементы массива res Добавлено: А сам понял, надо string res[10]; вне функции декларировать |
------- Отправлено: 14:08, 02-10-2004 | #8 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Как удалить определённую строчку в файле??
Работаю со стрингами и streams с++ Есть массив FILE[size], каждый элемент которого является определённой строчкой файла. Надо удалить элемент под номером i данного массива и всё оставшееся записать обратно в файл И i, и size известны У меня что то это проделать не получается |
------- Отправлено: 15:45, 05-10-2004 | #9 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать
i - переменная счётчика цикла. Лучше для других уелей её не применять и выбирать более значащие имена.
А FILE, если не ошибаюсь #define на внутреннию структуру в stdio.h, или просто структура, не уверен. Но главное, что лучше такоей имя не использовать, на всякий пожарный. И вообще, имена большими буквами лучше давать только константам (задефайненым или через enum). |
------- Отправлено: 00:14, 06-10-2004 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] нужна помощь программиста. | 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 |
|