* [Comm] С программисты помогите пожалуйста.
@ 2005-02-28 9:31 Oleg Pan
2005-02-28 9:42 ` Alexey Morsov
` (2 more replies)
0 siblings, 3 replies; 17+ messages in thread
From: Oleg Pan @ 2005-02-28 9:31 UTC (permalink / raw)
To: community
Hello ,
Master 2.4
gcc version 3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)
компиляция gcc file.c без ошибок
при запуске SegFault
я думаю там /**/ он не может выполнить strtok
#include <string.h>
#include <stdio.h>
void main(){
char *string;
string = "a string, of , ,tokens";
const char *delim = ",";
char *token;
token = strtok(string,delim);
/**/
while (token !=NULL) {
printf("%s\n",token);
token = strtok(NULL,delim);
};
};
--
Best regards,
Oleg mailto:wacom@narod.ru
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm] С программисты помогите пожалуйста.
2005-02-28 9:31 [Comm] С программисты помогите пожалуйста Oleg Pan
@ 2005-02-28 9:42 ` Alexey Morsov
2005-02-28 11:35 ` [Comm] " Arioch
2005-02-28 11:37 ` Arioch
2005-02-28 9:54 ` [Comm] " Vitaly Lipatov
2005-02-28 10:05 ` Yura Kalinichenko
2 siblings, 2 replies; 17+ messages in thread
From: Alexey Morsov @ 2005-02-28 9:42 UTC (permalink / raw)
To: community
Oleg Pan wrote:
> Hello ,
>
> Master 2.4
> gcc version 3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)
>
> компиляция gcc file.c без ошибок
> при запуске SegFault
> я думаю там /**/ он не может выполнить strtok
>
>
>
> #include <string.h>
> #include <stdio.h>
>
> void main(){
>
> char *string;
> string = "a string, of , ,tokens";
Либо вы пишите тут char *string="строка ваша";
либо char *string;
sprintf(string,"%s","Ваша строка");
> const char *delim = ",";
Во тут правильно
> char *token;
>
> token = strtok(string,delim);
Ну и сколько памяти должен компилятор выделить?
или malloc token-у сколько надо или проще - объявите его как char
token[256];
Строки в Си - это та еще песня :)
--
Всего наилучшего,
Системный Администратор ЗАО "ИК "РИКОМ-ТРАСТ"
Алексей Морсов
ICQ: 196766290
Jabber: Samurai@jabber.pibhe.com
http://www.ricom.ru
http://www.fondmarket.ru
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm] С программисты помогите пожалуйста.
2005-02-28 9:31 [Comm] С программисты помогите пожалуйста Oleg Pan
2005-02-28 9:42 ` Alexey Morsov
@ 2005-02-28 9:54 ` Vitaly Lipatov
2005-02-28 10:05 ` Yura Kalinichenko
2 siblings, 0 replies; 17+ messages in thread
From: Vitaly Lipatov @ 2005-02-28 9:54 UTC (permalink / raw)
To: community
On Monday 28 February 2005 12:31, Oleg Pan wrote:
> Hello ,
>
> Master 2.4
> gcc version 3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)
>
> компиляция gcc file.c без ошибок
> при запуске SegFault
> я думаю там /**/ он не может выполнить strtok
Вот цитата из man по strtok:
ПРОБЛЕМЫ
Никогда не используйте эти функции.
> char *string;
> string = "a string, of , ,tokens";
strtok будет менять эту строку, поэтому она должна быть выделена
динамически.
--
Lav
Виталий Липатов
Санкт-Петербург
GNU! ALT Linux Team! LaTeX! LyX!
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm] С программисты помогите пожалуйста.
2005-02-28 9:31 [Comm] С программисты помогите пожалуйста Oleg Pan
2005-02-28 9:42 ` Alexey Morsov
2005-02-28 9:54 ` [Comm] " Vitaly Lipatov
@ 2005-02-28 10:05 ` Yura Kalinichenko
2005-02-28 11:32 ` Re[2]: " Oleg Pan
2 siblings, 1 reply; 17+ messages in thread
From: Yura Kalinichenko @ 2005-02-28 10:05 UTC (permalink / raw)
To: community
On Пнд, 2005-02-28 at 12:31 +0300, Oleg Pan wrote:
> Hello ,
>
> Master 2.4
> gcc version 3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)
>
> компиляция gcc file.c без ошибок
> при запуске SegFault
> я думаю там /**/ он не может выполнить strtok
>
#include <string.h>
#include <stdio.h>
#define MAXS 80
int main(){
char string[MAXS];
const char *delim = ",";
char *token;
strncpy(string, "a string, of , ,tokens", MAXS-1);
token = strtok(string,delim);
/**/
while (token !=NULL) {
printf("%s\n",token);
token = strtok(NULL,delim);
};
return 0;
};
[yuk@yuk tmp]$ cc -O2 tst.c -o tst
[yuk@yuk tmp]$ ./tst
a string
of
tokens
--
Yura Kalinichenko
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re[2]: [Comm] С программисты помогите пожалуйста.
2005-02-28 10:05 ` Yura Kalinichenko
@ 2005-02-28 11:32 ` Oleg Pan
0 siblings, 0 replies; 17+ messages in thread
From: Oleg Pan @ 2005-02-28 11:32 UTC (permalink / raw)
To: Yura Kalinichenko
Hello Yura,
Monday, February 28, 2005, 1:05:57 PM, you wrote:
> [yuk@yuk tmp]$ cc -O2 tst.c -o tst
> [yuk@yuk tmp]$ ./tst
> a string
> of
> tokens
Спасибо большое я понял
--
Best regards,
Oleg mailto:wacom@narod.ru
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Comm] Re: С программисты помогите пожалуйста.
2005-02-28 9:42 ` Alexey Morsov
@ 2005-02-28 11:35 ` Arioch
2005-02-28 11:37 ` Arioch
1 sibling, 0 replies; 17+ messages in thread
From: Arioch @ 2005-02-28 11:35 UTC (permalink / raw)
To: community
Alexey Morsov пишет:
> или malloc token-у сколько надо или проще - объявите его как char
> token[256];
>
> Строки в Си - это та еще песня :)
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Community mailing list
> Community@altlinux.ru
> https://lists.altlinux.ru/mailman/listinfo/community
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Comm] Re: С программисты помогите пожалуйста.
2005-02-28 9:42 ` Alexey Morsov
2005-02-28 11:35 ` [Comm] " Arioch
@ 2005-02-28 11:37 ` Arioch
2005-02-28 16:49 ` Alexey Morsov
1 sibling, 1 reply; 17+ messages in thread
From: Arioch @ 2005-02-28 11:37 UTC (permalink / raw)
To: community
Alexey Morsov пишет:
> проще - объявите его как char
> token[256];
И тогда прославитесь, появится вирус, который через вашу программу будет
пытаться систему взламывать :-)
> Строки в Си - это та еще песня :)
Да нет их там по сути.
Вот под C++ есть библиотеки классов.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm] Re: С программисты помогите пожалуйста.
2005-02-28 11:37 ` Arioch
@ 2005-02-28 16:49 ` Alexey Morsov
2005-02-28 17:25 ` Nick S. Grechukh
2005-02-28 18:54 ` Arioch
0 siblings, 2 replies; 17+ messages in thread
From: Alexey Morsov @ 2005-02-28 16:49 UTC (permalink / raw)
To: community
Arioch wrote:
> Alexey Morsov пишет:
>
>
>>проще - объявите его как char
>>token[256];
>
>
> И тогда прославитесь, появится вирус, который через вашу программу будет
> пытаться систему взламывать :-)
Ну ладно ладно - ошибся я...
По хорошему в Си все что связано со сторками (т.е. с массивами и
ссылками) - суть потенциальная дырка, хотя бы для элеменарного buffer
overflow :)
>
>
>
>>Строки в Си - это та еще песня :)
>
> Да нет их там по сути.
Я имел ввиду что работать со строками там не удобно.
Я в курсе что их там нет :)
> Вот под C++ есть библиотеки классов.
Которая по сути просто скрывает от вас все то, что на Си вам пришлось бы
писать самому :) Нет строк в C++ :)
--
Всего наилучшего,
Системный Администратор ЗАО "ИК "РИКОМ-ТРАСТ"
Алексей Морсов
ICQ: 196766290
Jabber: Samurai@jabber.pibhe.com
http://www.ricom.ru
http://www.fondmarket.ru
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm] Re: С программисты помогите пожалуйста.
2005-02-28 16:49 ` Alexey Morsov
@ 2005-02-28 17:25 ` Nick S. Grechukh
2005-02-28 17:59 ` Alexey Rusakov
2005-03-01 8:17 ` Alexey Morsov
2005-02-28 18:54 ` Arioch
1 sibling, 2 replies; 17+ messages in thread
From: Nick S. Grechukh @ 2005-02-28 17:25 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 325 bytes --]
On Monday 28 February 2005 18:49, Alexey Morsov wrote:
> Которая по сути просто скрывает от вас все то, что на Си вам пришлось бы
> писать самому :) Нет строк в C++ :)
ого. а это что?
string sss;
sss="test string1";
string s2="test string2";
// чем не строки? без всяких strcat и memcpy
s2=s2+sss;
printf("%s\n",s2.c_str());
[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm] Re: С программисты помогите пожалуйста.
2005-02-28 17:25 ` Nick S. Grechukh
@ 2005-02-28 17:59 ` Alexey Rusakov
2005-02-28 18:02 ` [Comm][JT] " Denis Klykvin
2005-03-01 10:47 ` [JT] Re: [Comm] " Nick S. Grechukh
2005-03-01 8:17 ` Alexey Morsov
1 sibling, 2 replies; 17+ messages in thread
From: Alexey Rusakov @ 2005-02-28 17:59 UTC (permalink / raw)
To: community
On 28.02.2005 20:25, Nick S. Grechukh wrote:
> On Monday 28 February 2005 18:49, Alexey Morsov wrote:
>>Которая по сути просто скрывает от вас все то, что на Си вам пришлось бы
>>писать самому :) Нет строк в C++ :)
> ого. а это что?
> string sss;
> sss="test string1";
> string s2="test string2";
> // чем не строки? без всяких strcat и memcpy
> s2=s2+sss;
> printf("%s\n",s2.c_str());
Так...
Ну короче, поскольку здесь не comp.lang.c++, даю ссылку:
http://russian.joelonsoftware.com/Articles/LeakyAbstractions.html
У строк C++ есть очень много дыр.
--
Alexey "Ktirf" Rusakov
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm][JT] Re: С программисты помогите пожалуйста.
2005-02-28 17:59 ` Alexey Rusakov
@ 2005-02-28 18:02 ` Denis Klykvin
2005-03-01 10:47 ` [JT] Re: [Comm] " Nick S. Grechukh
1 sibling, 0 replies; 17+ messages in thread
From: Denis Klykvin @ 2005-02-28 18:02 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 411 bytes --]
On Mon, 28 Feb 2005 20:59:58 +0300
Alexey Rusakov wrote:
> Ну короче, поскольку здесь не comp.lang.c++, даю ссылку:
> http://russian.joelonsoftware.com/Articles/LeakyAbstractions.html
>
> У строк C++ есть очень много дыр.
Гм... а давайте с holy war куда-нить пойдём? Хотя-бы в /dev/null
--
With Best Wishes, Denis Klykvin
JID: nikon@jabber.ru
XmmS now play: Boccaccio Life - The Secret Wish
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Comm] Re: С программисты помогите пожалуйста.
2005-02-28 16:49 ` Alexey Morsov
2005-02-28 17:25 ` Nick S. Grechukh
@ 2005-02-28 18:54 ` Arioch
1 sibling, 0 replies; 17+ messages in thread
From: Arioch @ 2005-02-28 18:54 UTC (permalink / raw)
To: community
Alexey Morsov пишет:
>> Вот под C++ есть библиотеки классов.
>
> Которая по сути просто скрывает от вас все то, что на Си вам
> пришлось бы писать самому :) Нет строк в C++ :)
Жа и самого Си нету, ибо он рпосто скрывает от меня машинный код :D
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm] Re: С программисты помогите пожалуйста.
2005-02-28 17:25 ` Nick S. Grechukh
2005-02-28 17:59 ` Alexey Rusakov
@ 2005-03-01 8:17 ` Alexey Morsov
2005-03-01 8:56 ` Alexey Rusakov
1 sibling, 1 reply; 17+ messages in thread
From: Alexey Morsov @ 2005-03-01 8:17 UTC (permalink / raw)
To: community
Nick S. Grechukh wrote:
> ого. а это что?
> string sss;
> sss="test string1";
> string s2="test string2";
> // чем не строки? без всяких strcat и memcpy
А разве это не класс ? Разве = и + это не переопределенные унарные
операторы для этого класса?
:)
--
Всего наилучшего,
Системный Администратор ЗАО "ИК "РИКОМ-ТРАСТ"
Алексей Морсов
ICQ: 196766290
Jabber: Samurai@jabber.pibhe.com
http://www.ricom.ru
http://www.fondmarket.ru
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm] Re: С программисты помогите пожалуйста.
2005-03-01 8:17 ` Alexey Morsov
@ 2005-03-01 8:56 ` Alexey Rusakov
2005-03-01 10:26 ` Alexey Morsov
0 siblings, 1 reply; 17+ messages in thread
From: Alexey Rusakov @ 2005-03-01 8:56 UTC (permalink / raw)
To: community
Alexey Morsov wrote:
>Nick S. Grechukh wrote:
>
>
>>ого. а это что?
>>string sss;
>>sss="test string1";
>>string s2="test string2";
>>// чем не строки? без всяких strcat и memcpy
>>
>>
>А разве это не класс ? Разве = и + это не переопределенные унарные
>операторы для этого класса?
>:)
>
>
Это долгая и грустная тема. Давайте не будем её развивать, тем более нам
тут этого уже пожелали.
--
Alexey "Ktirf" Rusakov
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Comm] Re: С программисты помогите пожалуйста.
2005-03-01 8:56 ` Alexey Rusakov
@ 2005-03-01 10:26 ` Alexey Morsov
0 siblings, 0 replies; 17+ messages in thread
From: Alexey Morsov @ 2005-03-01 10:26 UTC (permalink / raw)
To: community
Alexey Rusakov wrote:
> Это долгая и грустная тема. Давайте не будем её развивать, тем более нам
> тут этого уже пожелали.
Полностью за :)
--
Всего наилучшего,
Системный Администратор ЗАО "ИК "РИКОМ-ТРАСТ"
Алексей Морсов
ICQ: 196766290
Jabber: Samurai@jabber.pibhe.com
http://www.ricom.ru
http://www.fondmarket.ru
^ permalink raw reply [flat|nested] 17+ messages in thread
* [JT] Re: [Comm] Re: С программисты помогите пожалуйста.
2005-02-28 17:59 ` Alexey Rusakov
2005-02-28 18:02 ` [Comm][JT] " Denis Klykvin
@ 2005-03-01 10:47 ` Nick S. Grechukh
2005-03-01 11:08 ` Aleksandr Olar
1 sibling, 1 reply; 17+ messages in thread
From: Nick S. Grechukh @ 2005-03-01 10:47 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 1069 bytes --]
On Monday 28 February 2005 19:59, Alexey Rusakov wrote:
> On 28.02.2005 20:25, Nick S. Grechukh wrote:
> > On Monday 28 February 2005 18:49, Alexey Morsov wrote:
> >>Которая по сути просто скрывает от вас все то, что на Си вам пришлось бы
> >>писать самому :) Нет строк в C++ :)
> > ого. а это что?
> > string sss;
> > sss="test string1";
> > string s2="test string2";
> > // чем не строки? без всяких strcat и memcpy
> > s2=s2+sss;
> > printf("%s\n",s2.c_str());
> Так...
> Ну короче, поскольку здесь не comp.lang.c++, даю ссылку:
> http://russian.joelonsoftware.com/Articles/LeakyAbstractions.html
я Джоэла читаю. однако уже замучался на каждый чих писать
char *newstr;
size_t len1=strlen(str1);
size_t len2=strlen(str2);
newstr=malloc(len1+len2);
// а вдруг соседний thread уже изменил str1/str2, вот и снесло крышу strcat
strncat(newstr,str1,len1);
strncat(newstr,str2,len2);
//и еще и не забыть free все что мы на malloc'или. ужасть.
strings внутри себя делает то же самое, по крайней мере ненамного хуже C. все
как обычно - либо красиво, либо оптимизировано.
[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [JT] Re: [Comm] Re: С программисты помогите пожалуйста.
2005-03-01 10:47 ` [JT] Re: [Comm] " Nick S. Grechukh
@ 2005-03-01 11:08 ` Aleksandr Olar
0 siblings, 0 replies; 17+ messages in thread
From: Aleksandr Olar @ 2005-03-01 11:08 UTC (permalink / raw)
To: community
Nick S. Grechukh пишет:
>On Monday 28 February 2005 19:59, Alexey Rusakov wrote:
>
>
>>On 28.02.2005 20:25, Nick S. Grechukh wrote:
>>
>>
>>>On Monday 28 February 2005 18:49, Alexey Morsov wrote:
>>>
>>>
>>>>Которая по сути просто скрывает от вас все то, что на Си вам пришлось бы
>>>>писать самому :) Нет строк в C++ :)
>>>>
>>>>
>>>ого. а это что?
>>>string sss;
>>>sss="test string1";
>>>string s2="test string2";
>>>// чем не строки? без всяких strcat и memcpy
>>>s2=s2+sss;
>>>printf("%s\n",s2.c_str());
>>>
>>>
>>Так...
>>Ну короче, поскольку здесь не comp.lang.c++, даю ссылку:
>>http://russian.joelonsoftware.com/Articles/LeakyAbstractions.html
>>
>>
>я Джоэла читаю. однако уже замучался на каждый чих писать
>char *newstr;
>size_t len1=strlen(str1);
>size_t len2=strlen(str2);
>newstr=malloc(len1+len2);
>// а вдруг соседний thread уже изменил str1/str2, вот и снесло крышу strcat
>strncat(newstr,str1,len1);
>strncat(newstr,str2,len2);
>//и еще и не забыть free все что мы на malloc'или. ужасть.
>strings внутри себя делает то же самое, по крайней мере ненамного хуже C. все
>как обычно - либо красиво, либо оптимизировано.
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Community mailing list
>Community@altlinux.ru
>https://lists.altlinux.ru/mailman/listinfo/community
>
то же самое только со string:
#include <string>
#include <iostream>
use namespace std;
....
string newstr(str1);
newstr += str2;
// еще вывод
cout << newstr << '\n';
....
free не надо деструктор все сделает сам
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2005-03-01 11:08 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-02-28 9:31 [Comm] С программисты помогите пожалуйста Oleg Pan
2005-02-28 9:42 ` Alexey Morsov
2005-02-28 11:35 ` [Comm] " Arioch
2005-02-28 11:37 ` Arioch
2005-02-28 16:49 ` Alexey Morsov
2005-02-28 17:25 ` Nick S. Grechukh
2005-02-28 17:59 ` Alexey Rusakov
2005-02-28 18:02 ` [Comm][JT] " Denis Klykvin
2005-03-01 10:47 ` [JT] Re: [Comm] " Nick S. Grechukh
2005-03-01 11:08 ` Aleksandr Olar
2005-03-01 8:17 ` Alexey Morsov
2005-03-01 8:56 ` Alexey Rusakov
2005-03-01 10:26 ` Alexey Morsov
2005-02-28 18:54 ` Arioch
2005-02-28 9:54 ` [Comm] " Vitaly Lipatov
2005-02-28 10:05 ` Yura Kalinichenko
2005-02-28 11:32 ` Re[2]: " Oleg Pan
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git