🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
6 messages
6 total messages Started by Gernot Schwed Wed, 27 Dec 1995 20:18
Noch 'ne dumme Frage...
#1113
Author: Gernot Schwed
Date: Wed, 27 Dec 1995 20:18
89 lines
2073 bytes
Hi!

Das Proggi soll in einer Datei einen Text / String ersetzen.

Doch der Abbruch erfolgt direkt nach:

printf ("\nBitte Suchstring eingeben :");
scanf ("%i",&string1);

Hat jemand eine Idee oder zufaellig eine Funktion, die sowas macht.
Eigentlich braeuchte ich eine Funktion die untersucht, ob ein String
in einer Datei enthalten ist. Aber ich denke ich kann mir das basteln,
wenn das andere funktioniert.

DANKE!
Gernot

---------------------------------------------------------------------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include <stdlib.h>

char searchtext[]="&string1";
char storedummy[]="&string2";

void read_head(FILE *file)
{
   int i;
   for(i=0; i<strlen(searchtext); i++) storedummy[i]=fgetc(file);
}

void shift_and_read(FILE *file)
{
   int i;
   char *dummy = (char *)malloc(strlen(searchtext));

   for(i=1; i< strlen(searchtext); i++)
     dummy[i-1]=storedummy[i];

   dummy[strlen(searchtext)-1]=fgetc(file);
   strcpy(storedummy,dummy);
}




main()
{

int string1;
int string2;

printf ("\nBitte Suchstring eingeben :");
scanf ("%i",&string1);
printf ("\nBitte Ersatz eingeben :");
scanf ("%i",&string2);



FILE *infile, *outfile;

  infile=fopen("test.txt","rb");
  outfile=fopen("test.new","w");

  if(!outfile ||!infile) return(1);

  read_head(infile);

  while(!feof(infile))
  {
   if(!strcmp(storedummy, searchtext))
     {
	printf("\nFound %s !",searchtext);
	exit(0);
     }

   shift_and_read(infile);
  }

  printf("\nNot found!");
  fclose(infile);
  fclose(outfile);
  exit(0);
}


http://stud.uni-sb.de/~gescw/
Re: Noch 'ne dumme Frage...
#1121
Author: Watson
Date: Thu, 28 Dec 1995 15:32
18 lines
1022 bytes
Gernot Schwed wrote:

> printf ("\nBitte Suchstring eingeben :");
> scanf ("%i",&string1);

Versuchs mal mit 

scanf("%d",&string1);

Ansonsten ist scanf() keine sonderlich portable Funktion.
Besser gets(), fgets() und anschliessende Konvertierung
mittels atol(), atoi() o.s.Ae., was Du ja durch den Identifier
'string1' fuer einen int-value bereits bestens vorbereitet
hast :-)
-- 
*	Greetinx,
	Watson (sayegh@fokus.gmd.de)
	http://www.fokus.gmd.de/ovma/employees/sayegh/entry.html
Re: Noch 'ne dumme Frage...
#1122
Author: Kurt Watzka
Date: Thu, 28 Dec 1995 18:08
38 lines
1643 bytes
Watson <sayegh@fokus.gmd.de> writes:

>Gernot Schwed wrote:

>> printf ("\nBitte Suchstring eingeben :");
>> scanf ("%i",&string1);

>Versuchs mal mit 

>scanf("%d",&string1);

Wenn "sting1" ein Integer ist, hat die Variable einen sehr ungewoehnlichen
Namen, andernfalls ist der Formatstring natuerlich genauso falsch wie 
"%i".

Nachdem "string1" aber ein int ist, bewirkt der andere Formatstring lediglich
einige (nicht fuer jeden intuitive) zusaetzliche Konversionen.

>Ansonsten ist scanf() keine sonderlich portable Funktion.

Aber nein, im Gegenteil, scanf() ist eine Funktion der Standardbibliothek,
also geht es gar nicht portabler. Allerdings ist scanf() keine besonders
_stabile_ Funktion, d.h. sie sollte nicht direkt mit Benutzern in Kontakt
kommen.

>Besser gets(), fgets() und anschliessende Konvertierung
>mittels atol(), atoi() o.s.Ae., was Du ja durch den Identifier
>'string1' fuer einen int-value bereits bestens vorbereitet
>hast :-)

Oder mit iostreams, wenn das ganze sich schon in de.comp.lang.c++
abspielt.

Kurt
--
| Kurt Watzka                             Phone : +49-89-2180-6254
| watzka@stat.uni-muenchen.de
| ua302aa@sunmail.lrz-muenchen.de
Re: Noch 'ne dumme Frage...
#1167
Author: Martin Prange
Date: Thu, 04 Jan 1996 14:20
50 lines
2429 bytes
In article <4bume1$ph@sparcserver.lrz-muenchen.de> ua302aa@sun2.lrz-muenchen.de (Kurt Watzka) writes:


   Watson <sayegh@fokus.gmd.de> writes:

   >Gernot Schwed wrote:

   >> printf ("\nBitte Suchstring eingeben :");
   >> scanf ("%i",&string1);

   >Versuchs mal mit 

   >scanf("%d",&string1);

[deleted...]

   >Ansonsten ist scanf() keine sonderlich portable Funktion.

   Aber nein, im Gegenteil, scanf() ist eine Funktion der Standardbibliothek,
   also geht es gar nicht portabler. Allerdings ist scanf() keine besonders
   _stabile_ Funktion, d.h. sie sollte nicht direkt mit Benutzern in Kontakt
   kommen.

   >Besser gets(), fgets() und anschliessende Konvertierung
   >mittels atol(), atoi() o.s.Ae., was Du ja durch den Identifier
   >'string1' fuer einen int-value bereits bestens vorbereitet
   >hast :-)


Nun macht aber mal halblang.
Denkt hier noch jemand an die uerspruengliche Frage des Posters ?

IMHO sollte der ehrenwerte Suchstring-ersetzende Programmierer sich
mit den (erweiterten) regex - Quellen auseinandersetzen.
Dies ist zwar Arbeit fuer nicht-Regex-Experten, hat aber die
entscheidenden Vorteile, dass 
1. das Suchen kinderleicht ist
2. man Wortgrenzen beruecksichtigen kann 
				( bsp: int XX::bla() -> int YY::bla() )
3. das Ersetzen durch die register auch schon so gut wie auskodiert (!) ist.


Also: Quellen besorgen und sorgfaeltig der header lesen !

NOTE: Die nihcl-library enthaelt, genausowie die g++-lib, eine C++
Klasse dafuer !!!
__
Martin Prange (prange@cs.tu-berlin.de) ////////////////////////////////////////
Member of the ALMAP Team at Alcatel SEL Berlin //// Home: +49 30 7848958 //////
                                              //// Work: +49 30 7002 - 0 (OP) /
Re: Noch 'ne dumme Frage...
#1174
Author: Gernot Schwed
Date: Fri, 05 Jan 1996 01:39
25 lines
1168 bytes
Aeh,

>Dies ist zwar Arbeit fuer nicht-Regex-Experten, hat aber die
>entscheidenden Vorteile, dass 
>1. das Suchen kinderleicht ist
>2. man Wortgrenzen beruecksichtigen kann 
>				( bsp: int XX::bla() -> int YY::bla() )
>3. das Ersetzen durch die register auch schon so gut wie auskodiert (!) ist.

Hoert sich wirklich gut an, aber ich hab' leider nix bei Borland
darueber gefunden...

>Also: Quellen besorgen und sorgfaeltig der header lesen !

Hast du eine Idee wo?!?

>NOTE: Die nihcl-library enthaelt, genausowie die g++-lib, eine C++
>Klasse dafuer !!!

auch darueber no Infos in meinenm Compiler...

DANKE!
Gernot

http://stud.uni-sb.de/~gescw/
Re: Noch 'ne dumme Frage...
#1207
Author: Martin Prange
Date: Tue, 09 Jan 1996 15:32
31 lines
1860 bytes
In article <4chvjl$ul6@bellona.wg.saar.de> gescw@stud.uni-sb.de (Gernot Schwed) writes:

   Path: cs.tu-berlin.de!zib-berlin.de!irz401!news1.urz.tu-dresden.de!news.dfn.de!scsing.switch.ch!blackbush.xlink.net!hades.rz.uni-sb.de!wg.saar.de!news

   >Dies ist zwar Arbeit fuer nicht-Regex-Experten, hat aber die
   >entscheidenden Vorteile, dass 
   >1. das Suchen kinderleicht ist
   >2. man Wortgrenzen beruecksichtigen kann 
   >				( bsp: int XX::bla() -> int YY::bla() )
   >3. das Ersetzen durch die register auch schon so gut wie auskodiert (!) ist.

   Hoert sich wirklich gut an, aber ich hab' leider nix bei Borland
   darueber gefunden...

   >Also: Quellen besorgen und sorgfaeltig der header lesen !

   Hast du eine Idee wo?!?

   >NOTE: Die nihcl-library enthaelt, genausowie die g++-lib, eine C++
   >Klasse dafuer !!!

   auch darueber no Infos in meinenm Compiler...

archie -s nihcl
archie -s regex

__
Martin Prange (prange@cs.tu-berlin.de) ////////////////////////////////////////
Member of the ALMAP Team at Alcatel SEL Berlin //// Home: +49 30 7848958 //////
                                              //// Work: +49 30 7002 - 0 (OP) /
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads