Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 20:09

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C] Scanf Implementierung Schleife

Discussion on [C] Scanf Implementierung Schleife within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
vicdeking's Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 1,582
Received Thanks: 141
[C] Scanf Implementierung Schleife

Heyho,

Ich brauch eure Hilfe !

Ich müsste eine solche eine Datei mit z.B. diesen Inhalt einlesen.

digraph TestGraph {
A -> B;
A -> C;
B -> C;
B -> D;
C -> D;
}

Nun habe ich ein Pointer Pointer Array, welches auf ein zweidimensionales Pointer Array zeigt und das Array zeigt auf 2 weitere Arrays. In dem einem befinden sich nun die Elemente vor dem Pfeil und in dem anderen die Elemente hinter dem Pfeil. Die Elemente hinter und vor den Pfeilen sind strings.

Nun müsste ich alle "A -> B;" Diagramme einlesen nur habe ich momentan eine Denkblockade.
Die erste Zeile wird standardgemäß überspringen mit fgets().
Dann folgt aber schon das desaster.
Ich soll jetzt diesen Teil hier einlesen:

Code:
A -> B;
A -> C;
B -> C;
B -> D;
C -> D;
Nun habe ich bis jetzt nur herrausgefunden wie man die Graphen theoretisch auslesen könnte und in meine Arrays speichern könnte.
Das sieht folgendermaßen aus:

Code:
fscanf(f, "%s -> %s", quellArray.name, zielArray.name)
Nun möchte ich das auch für die nächste Zeile machen, aber mir fällt momentan keine richtige Bedingung für die While-Schleife ein.

Ein Tipp oder Hilfestellung wäre gut.

Kurze Anmerkung: Ich darf keine externen Libs oder sonstiges benutzen. Außerdem programmiere ich in einer Shell.

Mit freundlichen Grüßen

Vicdeking

P.S. Kompletter Code wird nur per PM geschickt, falls Hilfestellung kommt.
vicdeking is offline  
Old 05/24/2015, 23:40   #2
 
hazejp's Avatar
 
elite*gold: 0
Join Date: Jan 2015
Posts: 62
Received Thanks: 13
Ist nur ein Prototyp, hab' ich eben kurz geschrieben.
Ist noch nicht getestet, keine Ahnung ob es funktioniert.

Code:
#include <assert.h>
#include <stdio.h >

typedef struct digraph_element_t { const char *a, const char *b;                } digraph_element, *pdigraph_element;
typedef struct digraph_t         { const char *name; digraph_element elem[100]; } digraph,         *pdigraph;


/* eher malloc() bzw. realloc() */
static digraph elements[1000];
static int idx = 0;
static FILE *f;

int read_stuff(void) {
	/* 'f' initialisieren */
	/*       ...          */

	int result = 0, tmppos = 0, eidx = 0;

	idx = 0;
	while ( ! feof(f) && ! ferror(f) )
	{
		while (fgetc(f) == ' '
				|| fgetc(f) == '\n'
				|| fgetc(f) == '\r')  ;

		elements[idx].name = (const char * ) malloc(100);
		result = fscanf ( f, "digraph %s {", elements[idx].name );
		/* Fehler */ if (result != 1 ) return(0);

		for (;;)
		{
			eidx = 0;

			while (fgetc(f) == ' '
				|| fgetc(f) == '\n'
				|| fgetc(f) == '\r')  ;

			tmppos = ftell (f);
			if (fgetc(f) == '}') /* Ende dieser Struktur */ break;
			fseek(f, -1, SEEK_CUR);

			elements[idx].elem[eidx].a = (const char *) malloc(100);
			elements[idx].elem[eidx].b = (const char *) malloc(100);

			result = fscanf("%s -> %s", elements[idx].elem[eidx].a,
						elements[idx].elem[eidx].b);
			assert(fgetc(f) == ';') ;

			/* Fehler */ if ( result != 2 ) return(0);

			eidx++;
		}

		idx++;
	}

	/* Erfolg */ return(1);
}
hazejp is offline  
Old 05/25/2015, 00:30   #3
 
vicdeking's Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 1,582
Received Thanks: 141
Okay, danke, hilft mir aufjedenfall weiter
vicdeking is offline  
Old 05/27/2015, 17:53   #4
 
vicdeking's Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 1,582
Received Thanks: 141
Sorry, falls ich nochmals Frage, aber wie würde die Variante mit realloc aussehen? (Ich programmiere in C erst seit einer Woche) Ich versuche es die ganze Zeit mit realloc, nur kommt dann: incompatible type for argument 1 of 'realloc'...
vicdeking is offline  
Old 06/02/2015, 21:40   #5
 
vicdeking's Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 1,582
Received Thanks: 141
*close*
vicdeking is offline  
Reply


Similar Threads Similar Threads
C scanf eingaben in einer txt speichern?
06/04/2012 - C/C++ - 6 Replies
Hey, ich habe eine Frage. Kann man mit C scanf eingaben in einer txt speichern? Wenn ja wie?



All times are GMT +1. The time now is 20:09.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.