Делаю такую переменную: char text[30]. А значение данной переменной должно состоять из занчений двух переменных и плюс просто текст, то есть значение переменной text как бы собирается из разных частей
Как это правильно записать?? text=var1"lalala"var2 конечно не проходит P.S.:вопросов будет ещё много :) Добавлено: А сам разобрался: надо использовать функцию sprintf() Админам: плиззз, не удаляйте этот топик Я буду тут свои вопросы задавать |
Нужно подсчитать количество строчек в файле base.txt
я сделал это так Код:
int count() Мне это нужно для расширения кругозора :) [s]Исправлено: vadimiron, 22:42 29-09-2004[/s] |
vadimiron
Для текстовых файлов с длинными строками Ваш метод даст ошибку. |
hasherfrog
Ну так вопрос как раз звучал: Цитата:
А если имеется ввиду число 100, то я просто знаю, что в моём случае строчка не будет длинее ста знаков |
Например, можно найти длину файла через fseek/ftell, считать его целиком и посчитать количество '\n'. Если файл не слишко большой и памяти не слишком мало, как обычно и бывает. Даже в рекомендациях по написанию прикладных NetBSD программ утверждается, что такой метод предпочтительней построчного чтения.
Добавлено: Это самый простой путь. Можно читать не весь файл за раз, а кусками в буффер. В принципе, в данном случае ничуть не сложней. Хотя при более продвинутой обработке (какой-нибудь, даже примитивный, парсинг итд) это довольно неудобно. |
Мне нужна такая функция, чтобы из строки вида var1***var2***var3***.... все var вытащить, так как сколько этих var там будет я не знаю, нужно всё загонять в массив
Если кто программировал на PHP, то нужна функция explode Есть такое решение Код:
#include <string> Просто изза того, что все переменные являются строками, то array будет двумерным и я путаюсь, как в этом случае присваивание очередному элементу массива array организовать |
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] |
Всё со стрингом получилось
Вот так: Код:
void explode (char *line, char *delim) Добавлено: Ещё один вопрос: Мне надо чтобы массив после его генерации в этой функции был доступен и вне даннго блока, то есть я запускаю функцию explode(line,delim); и потом вызываю поочереди все элементы массива res Добавлено: А сам понял, надо string res[10]; вне функции декларировать |
Как удалить определённую строчку в файле??
Работаю со стрингами и streams с++ Есть массив FILE[size], каждый элемент которого является определённой строчкой файла. Надо удалить элемент под номером i данного массива и всё оставшееся записать обратно в файл И i, и size известны У меня что то это проделать не получается |
Код:
for (i = 0; i < size; ++i) А FILE, если не ошибаюсь #define на внутреннию структуру в stdio.h, или просто структура, не уверен. Но главное, что лучше такоей имя не использовать, на всякий пожарный. И вообще, имена большими буквами лучше давать только константам (задефайненым или через enum). |
Спасибо ivank, я сделал таким же образом, у меня там просто небольшая ошибка была, поэтому сначало не работало :)
|
Хочу начать изучение программирования под Винды и встал такой вопрос: как собственно говоря учить :)
Насколько я понял есть API, две компании сделали из него MFC и OWL для своих двух самых распространнёных компиляторов. Чтобы стать хорошим программистом, ведь не достаточно уметь программировать в какой то из двух сред, надо и API знать?? |
vadimiron
Вопрос риторический? ПС. На самом деле можно быть отличным программистом и при этом ни разу не видеть "окошек отца виндоуза" ;) |
Программирую на WinAPI
При компиляции появляются две такие ошибки: 1. [Linker error] undefined reference to `_Z7WinProcP6HWND__jjl@16' 2. [Linker error] undefined reference to `GetStockObject@4' Что это такое и как с ним бороться??? Врней что это такое, я вроде догадываюсь, линкер не может что то подсоединить, но изза чего это происходит??? Среда: DevC++, они вроде компилятор от mingw используют, если я правильно понимаю Добавлено: С первым я разобрался, моя ошибка, а со вторым не могу GetStockObject - такая же функция в WinAPI есть, почему таая ошибка может возникнуть? |
Вы не подключили системную библиотеку при линковке, имхо. Это функция из GDI, афаик. Не могу точно сказать про DevC++, но кажется, Вы включили "Не использовать стандартные (системные?) библиотеки". Либо Вам надо указать явно при компиляции (точнее, линковке) эту библиотеку. Имя библиотеки можно узнать из справочника по API, там внизу страницы для каждой функции пишут имя хидера, имя библиотеки (ну и ещё что-то :))
|
Да, меня только одно смущает, этот пример я взял из уроков по АПИ, и во всех этих уроках подключается только одна стандартная библиотека <windows.h>, то есть видимо проблема у меня с компилятором
Буду разбираться |
Объясните мне, как string связан с namespace std??
Без объявления этого namespace-а у меня string не понимаются [s]Исправлено: vadimiron, 14:21 21-10-2004[/s] |
vadimiron
:cranky: Пфффф. Как насчёт книжку по C++ почитать? |
В моей книжке на этом акцент не делается.
А в примере using namespace std стоит, я думал, это относится к библиотеке iostream, которая подключается к данному примеру, я не знал, что объявление этого namespace также для функционирования стринга нужно. Так всё же, зачем std для стринга нужен?? hasherfrog Знаете, так можно вообще весь форум закрыть, а на главной странице написать:"Друзья, смотрите в книжках, там всё есть". Тема же называется: Вопросы начинающего программиста Я этим занимаюсь не больше месяца, конечно, я что то важное мог пропустить |
Цитата:
string объявлен в namespace std. Всё. Поэтому и надо указываеть этот неймспейс, либо при объявлении переменных как std::что-то, либо перед объявлением как using std::что-то или using namespace std. А вообще, в нормальной книжке, если рассказывается про std::string, должно бы рассказываться и про то, в какой области имён он объявляется, и про то, что такое namespace "вообще". [s]Исправлено: ivank, 7:22 23-10-2004[/s] |
Как сделать, чтобы функция возвращала массив в С или С++
Код:
int func() Там вроде надо как то с пойнтерами поигаться, я в них пока слаб.... |
Во-о-о-от. А теперь пускай сюда придут люди, которые говорят, что "С круче Дельфи" и расскажут в двух словах, как бы это так хитро сделать, чтобы программа была ясна и понятна...
|
Вот пример.
Код:
#include <stdio.h> |
Массив полностью вернуть из функции нельзя. Можно напрямую работать с массивом через указатели, тогда необходимость возвращать что-нибудь отпадает. Само имя массива по сути дела - всего лишь указатель.
Пример Код:
#include<stdio.h> |
mrcnn
а что значит *(с+i)=*(b+i) ? c и b - массивы, к элементу массива же вроде так обращаемся: c[i] |
vadimiron
Если очень примитивно объяснять, то указатель + целое == указатель[целое] |
Цитата:
таким образом конструкция *(c+i) указывает на i элемент массива c. По сути дела *(c+i) аналогично c[i], а *(с+i)=*(b+i) аналогитчно c[i]=b[i] |
Время: 19:48. |
Время: 19:48.
© OSzone.net 2001-