ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [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