|
OFF: Как присвоить пустое значение строке в c++ ? | ☑ | ||
---|---|---|---|---|
0
Anton2016
07.08.15
✎
13:55
|
строка - массив char
|
|||
1
ДенисЧ
07.08.15
✎
13:55
|
str[0]='\0';
|
|||
2
Anton2016
07.08.15
✎
13:55
|
спасибо
|
|||
3
Anton2016
07.08.15
✎
13:56
|
а NULL это то же что и '\0' или нет?
|
|||
4
ДенисЧ
07.08.15
✎
13:56
|
нет
|
|||
5
H A D G E H O G s
07.08.15
✎
13:57
|
(0) Боль. Страдание. Унижение.
|
|||
6
Anton2016
07.08.15
✎
13:58
|
memset(S, NULL, INTDMAXLENGTHOFSTRING);
это неправильно? |
|||
7
ДенисЧ
07.08.15
✎
14:02
|
(6) правильно - в (1)
|
|||
8
Anton2016
07.08.15
✎
14:03
|
спасибо...
понятно... придется переписывать... |
|||
9
Anton2016
07.08.15
✎
14:05
|
а может функция возвращать массив char?
|
|||
10
ДенисЧ
07.08.15
✎
14:07
|
А кто ей может запретить?
|
|||
11
Anton2016
07.08.15
✎
14:09
|
в функции создать массив, выделить память, вернуть указатель на массив как результат функции?
|
|||
12
mehfk
07.08.15
✎
14:14
|
(1) А че не так?
str = 0; |
|||
13
Anton2016
07.08.15
✎
14:14
|
не взлетит... тип не тот
|
|||
14
mehfk
07.08.15
✎
14:15
|
Это ты кому?
|
|||
15
Anton2016
07.08.15
✎
14:16
|
ВаМ
компилятор не пропустит... у меня этот OpenWatcom |
|||
16
mehfk
07.08.15
✎
14:20
|
сделай указатель, а не массив.
|
|||
17
Anton2016
07.08.15
✎
14:24
|
пошел читать Шилдта...
|
|||
18
mehfk
07.08.15
✎
14:24
|
или так *str = 0;
|
|||
19
ДенисЧ
07.08.15
✎
14:24
|
(17) Лучше Страустрапа.
Шилдт он больше по шарпу |
|||
20
mehfk
07.08.15
✎
14:24
|
лучше K&R
|
|||
21
ДенисЧ
07.08.15
✎
14:24
|
(18) Это то же самое, что и (1)
|
|||
22
ДенисЧ
07.08.15
✎
14:25
|
(20) K&R - это голый С
|
|||
23
mehfk
07.08.15
✎
14:25
|
(21) Jawohl, Voldemar!
Только смотрится красивее. |
|||
24
mehfk
07.08.15
✎
14:26
|
(22) Вопрос в топике и есть голый Си.
|
|||
25
Anton2016
07.08.15
✎
14:26
|
Страуступ слишком большой философ...
справочник по С++ Шилдта как то ближе к теме... мне всего то надо логи ipfw прочитать и в постгресс затолкать... |
|||
26
ДенисЧ
07.08.15
✎
14:28
|
(25) Тогда лучше Ларри Уолла
|
|||
27
ДенисЧ
07.08.15
✎
14:29
|
(24) Ну, согласен...
В с++ использовался бы std::string ... |
|||
28
Anton2016
07.08.15
✎
14:31
|
(26)
это по перлу что ли? |
|||
29
ДенисЧ
07.08.15
✎
14:32
|
(28) разумеется. Для разбора логов самое то. (и ни для чего больше )))
|
|||
30
Anton2016
07.08.15
✎
14:33
|
я подумаю...
|
|||
31
ДенисЧ
07.08.15
✎
14:33
|
(30) Только не очень долго....
|
|||
32
Anton2016
07.08.15
✎
14:44
|
да уже написал...
#include <conio.h> #include <iostream.h> #include <fstream.h> // #include <string.h> // #include <STDDEF.h> #define INTARRAYOFWORDSSMAXLENGTH 100 #define INTMAXLENGTHOFSTRING 100 using namespace std; const int intMaxLengthOfString=1024; ofstream streamDebug; ifstream streamTextIn; ofstream streamTextOut; int intFnArrOfCharTrimAll(char* ArrayOfChar_param_OldString, char* ArrayOfChar_param_NewString) { int intlengthOfString=strlen(ArrayOfChar_param_OldString); if (intlengthOfString == 0) { ArrayOfChar_param_NewString=ArrayOfChar_param_OldString; return 0; } int intPositionFirstSymbolNoSpace=0; for (int i=0; i<=intlengthOfString; i++) { if (ArrayOfChar_param_OldString[i]==' ') intPositionFirstSymbolNoSpace++; else break; } int intPositionLastSymbolNoSpace=0; char c; for (int i=intlengthOfString-1; i>=0; i--) { c=ArrayOfChar_param_OldString[i]; if (c == ' ') continue; else { intPositionLastSymbolNoSpace=i; break; } } for (int i=intlengthOfString-1; i>=0; i--) { c=ArrayOfChar_param_OldString[i]; if (c == ' ') continue; else { intPositionLastSymbolNoSpace=i; break; } } int j=0; for (int i=intPositionFirstSymbolNoSpace; i<=intPositionLastSymbolNoSpace; i++) { c = ArrayOfChar_param_OldString[i]; ArrayOfChar_param_NewString[j] = c; j++; } return 0; } int intFnArrOfCharDelGroupsOfSpaces(char* ArrayOfChar_param_OldString, char* ArrayOfChar_param_NewString) { int intlengthOfString=strlen(ArrayOfChar_param_OldString); if (intlengthOfString == 0) { ArrayOfChar_param_NewString=ArrayOfChar_param_OldString; return 0; } int intPositionFirstSymbolNoSpace=0; for (int i=0; i<=intlengthOfString; i++) { if (ArrayOfChar_param_OldString[i]==' ') intPositionFirstSymbolNoSpace++; else break; } int intPositionLastSymbolNoSpace=0; char c; for (int i=intlengthOfString-1; i>=0; i--) { c=ArrayOfChar_param_OldString[i]; if (c == ' ') continue; else { intPositionLastSymbolNoSpace=i; break; } } int flagSpace=0; int j=0; for (int i=intPositionFirstSymbolNoSpace; i<=intPositionLastSymbolNoSpace; i++) { c = ArrayOfChar_param_OldString[i]; if (!(c == ' ')) { flagSpace = 0; ArrayOfChar_param_NewString[j] = c; j++; } else { if (flagSpace==0) { flagSpace = 1; ArrayOfChar_param_NewString[j] = c; j++; } else { flagSpace = 1; continue; } } } return 0; } int intFnArrOfCharFindSubString(char* ArrayOfChar_param_String1, char* ArrayOfChar_param_String2) { int intlengthOfString1=strlen(ArrayOfChar_param_String1); int intlengthOfString2=strlen(ArrayOfChar_param_String2); if (intlengthOfString1 < intlengthOfString2) return -1; int intFindPosition=0; int intLengthDelta=intlengthOfString1-intlengthOfString2; for (int i=0; i<=intLengthDelta; i++) { intFindPosition=i; for (int j=0; j<intlengthOfString2; j++) { if (! (ArrayOfChar_param_String1[i+j] == ArrayOfChar_param_String2[j]) ) { intFindPosition=-1; break; } } if ( intFindPosition >=0 ) { return intFindPosition; } } return -1; } int intFnArrOfCharIsContainsCharactersNotSpace(char* ArrayOfChar_param_String) { int intresult=0; int intlengthOfString=strlen(ArrayOfChar_param_String); if (intlengthOfString == 0) return 0; char c; for (int i=0; i<(intlengthOfString); i++) { c=ArrayOfChar_param_String[i]; if (! (c == ' ') ) { intresult++; } } return intresult; } int main(int argc, char* argv[]) { cout << "Start..." << endl; streamDebug.open("debug.log", ios::out); if (argc == 1 ) { cout << "Error: File name is absent.\n"; while(!kbhit()); return 1; } char S[intMaxLengthOfString]={""}; char* ArrayOfCharFileName=argv[1]; streamTextIn.open(ArrayOfCharFileName, ios::in); if (!streamTextIn) { cout << "Cannot open file <streamTextIn>.\n"; while(!kbhit()); return 1; } streamTextOut.open("trr.log", ios::out); if (!streamTextOut) { cout << "Cannot open file <streamTextOut>.\n"; while(!kbhit()); return 1; } if (!streamDebug) { cout << "Cannot open file <streamDebug>.\n"; while(!kbhit()); return 1; } char ArrayOfCharNewString[INTMAXLENGTHOFSTRING]={""}; char arrayWords[INTARRAYOFWORDSSMAXLENGTH][INTMAXLENGTHOFSTRING]; int i, j; for (i=0; i<INTARRAYOFWORDSSMAXLENGTH; i++) { for (j=0; j<INTMAXLENGTHOFSTRING; j++) { arrayWords[i][j]=NULL; } } while (!streamTextIn.eof()) { memset(S, NULL, INTMAXLENGTHOFSTRING); memset(ArrayOfCharNewString, NULL, INTMAXLENGTHOFSTRING); streamTextIn.getline(S, INTMAXLENGTHOFSTRING); if (intFnArrOfCharIsContainsCharactersNotSpace(S) == 0) continue; streamDebug << "S" << S << "\n"; intFnArrOfCharDelGroupsOfSpaces(S, ArrayOfCharNewString); streamDebug << ArrayOfCharNewString << "\n"; int intlengthOfString=strlen(ArrayOfCharNewString); int intIndexOfWord=0; int intPositionInWord=0; char c; for (int i=0; i<=intlengthOfString; i++) { c = ArrayOfCharNewString[i]; if (c == ' ') { intIndexOfWord++; intPositionInWord=0; } else { arrayWords[intIndexOfWord][intPositionInWord] = c; intPositionInWord++; } } int intFlagFoundCount = 0; for (int i=0; i<intIndexOfWord; i++) { intFlagFoundCount = intFnArrOfCharFindSubString(arrayWords[i], "count"); if ( intFlagFoundCount >= 0) break; } if (intFlagFoundCount<0) continue; streamTextOut << arrayWords[8] << " "; streamTextOut << arrayWords[2] << "\n"; } streamTextIn.close(); streamTextOut.close(); return 0; } |
|||
33
Anton2016
07.08.15
✎
14:45
|
на выходе текстовый файл - ip и объем трафика...
осталось только узнать как их в postgre затолкать... ну и поправить... а так работает ;) |
|||
34
ДенисЧ
07.08.15
✎
14:46
|
Смешались в кучу кони, люди...
На awk у тебя было 2 строки... |
|||
35
Anton2016
07.08.15
✎
14:47
|
какие же?
|
|||
36
Xapac
07.08.15
✎
14:47
|
(32) убей себя за такой стиль
|
|||
37
Anton2016
07.08.15
✎
14:48
|
нет бесполезных знаний (с)
|
|||
38
Anton2016
07.08.15
✎
14:48
|
(6) и не подумаю xD
|
|||
39
Anton2016
07.08.15
✎
14:48
|
чем не нравится?
|
|||
40
Xapac
07.08.15
✎
14:49
|
(39) стиль школьной лабораторки.
|
|||
41
Anton2016
07.08.15
✎
14:50
|
накинулись... если че я на с второй день пишу ;)
|
|||
42
Anton2016
07.08.15
✎
14:51
|
и это моя первая работающая программа, ну за исключением Hello world! )
|
|||
43
Anton2016
07.08.15
✎
14:51
|
короче что поправить?
|
|||
44
Xapac
07.08.15
✎
14:52
|
не на с а на с++ в заголовке написано.
11 лет разницы вообщето |
|||
45
ДенисЧ
07.08.15
✎
14:53
|
(43) Ctrl-A, Ctrl-S
|
|||
46
Anton2016
07.08.15
✎
14:54
|
Люди добрые, а еще подскажите как взаимодействовать консольной программе на С++ с базой данных postgresql.
|
|||
47
Anton2016
07.08.15
✎
14:55
|
на freebsd дело будет происходить... с odbc там плохо...
|
|||
48
Anton2016
07.08.15
✎
14:58
|
libpq.dll / libpq.so надо подцепить? а как?
|
|||
49
Xapac
07.08.15
✎
14:59
|
(46)
погугли. там всё просто. |
|||
50
Anton2016
07.08.15
✎
15:00
|
хм
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |