🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: nl.comp.programmeren
Article #629

Re: c++ isin code

#629
From: Usurpator
Date: Sat, 12 May 2001 15:25
98 lines
4357 bytes
Op Thu, 10 May 2001 17:45:10 GMT slaagde TdC erin om dit te potsen:
>ik probeer deze code te laten werken in c++ in gewoon c werkt het maar wel
>met warning bij compile
>
>vb
>bash-2.04$ gcc test.cpp
>test.cpp: In function `int main()':
>test.cpp:34: passing `char **' as argument 1 of `isin(char *, char *)'
>bash-2.04$ cp test.cpp  test.c
>bash-2.04$ gcc test.c
>test.c: In function `main':
>test.c:34: warning: passing arg 1 of `isin' from incompatible pointer type
>test.c:34: warning: passing arg 2 of `isin' from incompatible pointer type
>bash-2.04$ ./a.out
>it works


>int isin(char *string1,char *string2)

Op het eerste gezicht vroeg ik me af waarom je geen if(strstr(string1,
string2) != NULL) deed. Het is altijd handig om commentaar te gebruiken,
zoals
/* Searches the first word of the sentence in string1 in string2.
Returns 1 when it's found and 0 when it isn't. */
Maar dat terzijde.

> char *word1;
> word1 = strtok (string1, " "); // returns a char *
> string2 = strstr (string2,word1); // returns a char *  ///

string2 = strstr(string2, strtok(string1, " \t"));
En // comments mogen niet in C, wel in C++

> if (string1 == '\0')

if(!string1)
	{ return 0; }
Moet je voor die strtok zetten.

> if(strncmp (string1, string2, strlen(string1)) == 0)

Waarom dit en niet gewoon if(string2 != NULL); ?


>int main()
>{
>   char *a="test test";
>   char *b="lala test tetsttt123";
> if (isin(&a,&b) == 1) // werkt in C niet in CPP en moet CPP zijn dus :(

Moet isin(a, b) zijn. Het is isin(char*, char*) en hier doe je
isin(char**, char**) (a is uit zichzelf char*, dus &a is char**)

Wat wel klopt is dat het programma gewoonweg crashed als je a ipv
&a geeft. Dat komt omdat de library op mijn systeem waarin strtok() zit
gewoonweg crashed als je een strtok(char*, const char*), zoals dat ook
moet volgens de ANSI en POSIX standaards,  doet. Als je strtok(char**,
const char*) crashed hij niet maar geeft hij een pointer naar een berg
onzin terug.

Ik ga even naar de GNU-website surfen om te kijken of er een bugfix is
en anders ga ik zelf een patch ervoor schrijven. Ik gebruik glibc 2.2
(je kunt de versie controleren door op de command prompt /lib/libc.so.6
te doen).

Hier heb je wel al een aangepaste versie van het programma die zou
moeten werken in andere C-compilers:
#include <stdio.h>
#include <string.h>
 
int isin(char* tosearch, char* searchin)  {
        /* Searches the first word of the sentence in string1 in
        string2. Returns 1 when it's found and 0 when it isn't. */
 
        if(!tosearch || !searchin)
                { return 0; }
        if(strstr(searchin, strtok(tosearch, " \t")) != NULL)
                { return 1; }
        return 0;
        }
 
void main(void) {
        char *a="test test";
        char *b="lala test tetsttt123";
 
        if (isin(a,b))
                { printf("it works"); }
        else
                { printf("it doesn't work"); }
        return 0;
        }

q
-- 
Jij bent afgebrand, smeerlap. Je hebt het verbruid. Alleen als je op je
knieen je verontschuldigingen aanbiedt bestaat er een hele kleine kans
dat ik ooit je gekots nog zal beantwoorden.
-- Town Kraaier, <MPG.155a2e7c8a7f197a989790@news.earthlink.net> 
Technical Details
Message-ID: <slrn9fqivo.b9.iqnullus@kaboutfger.bas>
Path: arc1-ca.pugleaf.net!archiver1.sj.google.com!newsfeed.google.com!sn-xit-03!supernews.com!cyclone-sjo1.usenetserver.com!news-out-sjo.usenetserver.com!news.tele.dk!134.222.94.5!npeer.kpnqwest.net!news2.kpn.net!news.kpn.net!feeder02.wxs.nl!transit.news.xs4all.nl!iqnullus
References: <GsAK6.67067$ii.8636438@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: 107324,6e75983a23de8f69
X-Google-Attributes: gid107324,public
X-Google-Thread: fcea4,6e75983a23de8f69
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2001-05-12 08:26:03 PST
Path: arc1-ca.pugleaf.net!archiver1.sj.google.com!newsfeed.google.com!sn-xit-03!supernews.com!cyclone-sjo1.usenetserver.com!news-out-sjo.usenetserver.com!news.tele.dk!134.222.94.5!npeer.kpnqwest.net!news2.kpn.net!news.kpn.net!feeder02.wxs.nl!transit.news.xs4all.nl!iqnullus
From: iqnullus@arachne.jaze.net (Usurpator)
Newsgroups: nl.comp.programmeren,be.comp.programming
Subject: Re: c++ isin code
Date: 12 May 2001 15:25:03 GMT
Organization: XS4ALL Internet BV
Lines: 98
Message-ID: <slrn9fqivo.b9.iqnullus@kaboutfger.bas>
References: <GsAK6.67067$ii.8636438@afrodite.telenet-ops.be>
NNTP-Posting-Host: modem34.dial.xs4all.be
X-Trace: news1.xs4all.nl 989681103 23788 195.144.65.34 (12 May 2001 15:25:03 GMT)
X-Complaints-To: abuse@xs4all.nl
NNTP-Posting-Date: 12 May 2001 15:25:03 GMT
User-Agent: slrn/0.9.6.3 (Linux)