Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Suche » Suchergebnis » Hallo Gast [Anmelden|Registrieren]
Zeige Beiträge 1 bis 15 von 27 Treffern Seiten (2): [1] 2 nächste »
Autor Beitrag
Thema: C - Programm zu langsam
LightSideOfLife

Antworten: 1
Hits: 3.639
C - Programm zu langsam 28.06.2016 20:23 Forum: Softwaretechnik


Guten Abend!

Ich soll für mein Praktikum ein Programm programmieren, das eine sehr große Textdatei in einem Buffer speichert und dann Zeilenumbrüche und bestimmte Buchstaben löschen soll.
Benutzen sollen wir dafür die Funktion fread, strcspn und memmove, da eine Laufzeit von unter einer Minute erreicht werden muss.

Mein derzeitiger Code sieht so aus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct bufferstuff
{
	char* buffer_s;
	long laenge_s;
};

void* rmove(void* val)
{
	/*CASTEN VON VOID IN STRUCT BUFFERSTUFF*/
	
	struct bufferstuff* bufferstruct = (struct bufferstuff*) val;
	
	char* buffer;
	long laenge;
	size_t n;
	
	/*BUFFER AUS BUFFERSTRUCT AN BUFFER ZUR BEARBEITUNG ÜBERGEBEN*/ 
	
	buffer = bufferstruct->buffer_s;
	
	laenge = strlen(buffer);
	
	/*i UM SCHLEIFENDURCHGÄNGE ZU ZÄHLEN - UM ZU WISSEN WO ARRAY ZU ENDEN HAT: '\0'*/
	
	int i = 0;

	/*WHILE SCHLEIFE SUCHT ERSTES VORKOMMEN VON c,g,t,a oder N UND ARBEIET SO LANGE BIS SIE AM ENDE DES ARRAYS ANKOMMT*/
	
	while((n = strcspn(buffer,"cgtaN")) != laenge-i)
	{
		if(n >= laenge-i) /*return FALLS ENDE DES ARRAYS ERREICHT IST, ANSONSTEN SEGFAULT*/
			return (void*)buffer;
		memmove(&buffer[n], &buffer[n+1], laenge-n-1 ); /*MEMMOVE SCHIEBT ARRAY NACH VORNE*/
		i++; /*ZÄHLT SCHLEIFENDURCHGÄNGE*/
	}
	
	return (void*)buffer;
}

struct bufferstuff* buffercreate(FILE* datei)
{
	
	/*FUNKTION UM DATEI IN BUFFER ZU SPEICHERN*/
	
	char* buffer;
	long laenge;
	size_t ergebnis;
	long anzahl;

	fseek(datei, 0, SEEK_END);
	laenge = ftell(datei);
	rewind(datei);
	
	buffer = (char*)malloc(sizeof(char)* laenge);
	if (buffer == NULL){printf("ERROR"); exit(2);}
	
	ergebnis = fread(buffer, 1, laenge, datei);
	if (ergebnis != laenge) {printf("Error"); exit(3);} 
	
	fclose(datei);
	
	/*STRUCT ALLOC UM ES AN DIE VOID FUNKTION ZU ÜBERGEBEN/ GGF. MAL MIT THREADS ARBEITEN*/
	
	struct bufferstuff* bufferstruct = (struct bufferstuff*)malloc(sizeof(bufferstruct));
	
	bufferstruct->buffer_s = buffer;
	bufferstruct->laenge_s = laenge;
	
	/*AUSFÜHREN DER REMOVE FUNKTION/ STRUCT IN VOID GECASTET*/
	
	buffer = (char*)rmove((void*)bufferstruct);
	
	/*NEUEN BEARBEITETEN BUFFER IN STRUCT SPEICHERN UM STRUCT ZU RETURNEN*/
	
	bufferstruct->buffer_s = buffer;
	
	return bufferstruct;
}

main(int argc, char* argv[])
{	
	FILE* datei;

	struct bufferstuff* bufferstruct = (struct bufferstuff*)malloc(sizeof(bufferstruct));
	
	datei = fopen((argv[1]), "r");
	
	bufferstruct = buffercreate(datei);
	
	/*BUFFERSTRUCT BEINHALTET NUN BEARBEITETEN BUFFER*/
	
	char* buffer;
	
	/*IN BUFFER SPEICHERN UM GGF. AUSZUGEBEN*/
	ogramm
	buffer = bufferstruct->buffer_s;
	
	printf("%s", buffer);
	

}


Bei kleinen Textdateien ist das ganze sehr schnell und effizient.
Bei den großen Dateien mit denen wir arbeiten sollen (Chromosome) dauert die rmove Funktion jedoch ewig!
Hat einer ein Idee weshalb mein Programm so langsam ist?
Der Tutor sagte, dass Threads bei diesem Programm noch nicht einmal von Nöten sind. Muss auch zugeben dass ich mit denen noch nicht gut umgehen kann.
Für Hilfe wäre ich sehr dankbar!

Liebe Grüße,
Marvin
Thema: C - Telefonbuch Zeiger/Listen
LightSideOfLife

Antworten: 13
Hits: 8.958
19.01.2016 15:05 Forum: Softwaretechnik


Hier auch mal mein Versuch das Löschen eines Eintrags zu realisieren:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
void Loeschen(Person *erste)
{
	Person *derzeitige = erste;
	char gesucht;
		printf("Wessen Eintrag soll gelöscht werden? (Nachname)"); scanf("%s",gesucht);
			while (derzeitige != NULL)
			{
				if (derzeitige->next->nachname == gesucht)
				{
					Person *tmp1 = derzeitige->next->next;
					free(derzeitige->next);
					derzeitige->next = tmp1;
				}
			}
		
}


Hier sagt mir der Compiler immer:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Telefonbuch.c: In Funktion »NummerSuchen«:
Telefonbuch.c:75:30: Warnung: Vergleich zwischen Zeiger und Ganzzahl
     if (derzeitige->nachname == gesucht)
                              ^
Telefonbuch.c: In Funktion »Loeschen«:
Telefonbuch.c:88:25: Fehler: Dereferenzierung eines Zeigers auf unvollständigen Typen
     if (derzeitige->next->nachname == gesucht)
                         ^
Telefonbuch.c:90:37: Fehler: Dereferenzierung eines Zeigers auf unvollständigen Typen
      Person *tmp1 = derzeitige->next->next;
                                     ^
Telefonbuch.c:92:23: Warnung: Zuweisung von inkompatiblem Zeigertyp
      derzeitige->next = tmp1;
                       ^


Ihm scheinen also diese doppelten Pfeile nicht zu schmecken.
Außerdem wieder das "Zuweisung von inkomtabliblem Zeigertyp" Problem.
Man... Ich hab echt Verständnisprobleme bei Zeigern...
Thema: C - Telefonbuch Zeiger/Listen
LightSideOfLife

Antworten: 13
Hits: 8.958
19.01.2016 14:06 Forum: Softwaretechnik


Ok das mit dem Doppelzeiger ist jetzt etwas kompliziert für mich da muss ich mich mal genauer reinlesen und reindenken.
Außerdem beschwert sich noch mein Compiler oO

code:
1:
2:
3:
4:
5:
6:
7:
	else{
			naechste = *erste;
			while (naechste->next != NULL)
				naechste = (Person*) naechste->next;
			Person *tmp = (Person*) malloc(sizeof(Person));
			naechste->next = (Person*) tmp;
			naechste = (Person*) naechste->next;


code:
1:
2:
3:
4:
Telefonbuch.c:39:19: Warnung: Zuweisung von inkompatiblem Zeigertyp
    naechste->next = (Person*) tmp;
                   ^
Thema: C - Telefonbuch Zeiger/Listen
LightSideOfLife

Antworten: 13
Hits: 8.958
18.01.2016 23:40 Forum: Softwaretechnik


Ich bin den Segmentation Fault jetzt losgeworden und die Eingabe durchläuft er jetzt so ohne sich zu beschweren.
Jedoch komme ich nicht in die AusgabeFunktion.
Außerdem hat es nichts gebracht malloc in der main Funktion für mein erstes Element aufzurufen sondern ich musste es in der Hinzufuegen Funktion machen. Woran liegt das?

Hier mein jetziger Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct
{
    char nachname[15];
    char vorname[15];
    char wohnort[15];
    char telefonnummer[15];
	struct Person *next;
}Person;

void Hinzufuegen();

void Ausgabe();

main()
{
    Person *erste, *derzeitige;
	
	erste = NULL;
	
	Hinzufuegen(erste, derzeitige);
	Hinzufuegen(erste, derzeitige);
	Ausgabe(erste);
}

void Hinzufuegen(Person *erste, Person *derzeitige)
{
	if (erste == NULL){
				
				erste = (Person *) malloc(sizeof(Person));
				printf("\nGeben Sie den Nachnamen ein\n");		gets(erste->nachname);	
				printf("\nGeben Sie den Vornamen ein\n"); 		gets(erste->vorname);
				printf("\nGeben Sie den Wohnort ein\n"); 		gets(erste->wohnort);	
				printf("\nGeben Sie die Telefonnummer ein\n"); 	gets(erste->telefonnummer);
				erste->next 			= NULL;
				derzeitige = erste;
	}
	else{
		Person *naechste;
			if (derzeitige == NULL) return;
			if (derzeitige->next != NULL) return;
			
				derzeitige->next	= malloc(sizeof(Person));
				naechste 			= (Person*) derzeitige->next;

				printf("\nGeben Sie den Nachnamen ein\n");		gets(naechste->nachname);	
				printf("\nGeben Sie den Vornamen ein\n"); 		gets(naechste->vorname);
				printf("\nGeben Sie den Wohnort ein\n"); 		gets(naechste->wohnort);	
				printf("\nGeben Sie die Telefonnummer ein\n"); 	gets(naechste->telefonnummer);
	
				naechste->next 			= NULL;
	}
}

void Ausgabe(Person *erste)
{
	int i = 1;
	Person *derzeitige = erste;
		while (derzeitige != NULL)
		{
			printf("%d. Person: %s, %s, %s, %ld \n",i, derzeitige->nachname, derzeitige->vorname, derzeitige->wohnort, derzeitige->telefonnummer);
			derzeitige = (Person*) derzeitige->next;
			i++;
		}
}


Es kommt mir so vor als wenn sich mein Programm über die Funktionsgrenzen hinaus nichts merkt...
Aber erste und derzeitige müssten doch global sein oder nicht?
Thema: C - Telefonbuch Zeiger/Listen
LightSideOfLife

Antworten: 13
Hits: 8.958
18.01.2016 16:33 Forum: Softwaretechnik


Also Änderungen an meiner Zuweisung der ersten Person?
Thema: C - Telefonbuch Zeiger/Listen
LightSideOfLife

Antworten: 13
Hits: 8.958
18.01.2016 15:55 Forum: Softwaretechnik


Ja gerade eben :/
Man bin ich doof...

Jetzt hab ich folgendes:

Diese Zeilen:

code:
1:
2:
3:
strcpy(naechste->nachname,n_name);
	  strcpy(naechste->vorname,v_name);
	  strcpy(naechste->wohnort,w_ort);


geben mir diese Fehlermeldung:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
Telefonbuch.c: In Funktion »Hinzufuegen«:
Telefonbuch.c:31:30: Warnung: Übergabe des Arguments 2 von »strcpy« von inkompatiblem Zeigertyp
    strcpy(naechste->nachname,n_name);
                              ^
In file included from /usr/include/stdio.h:29:0,
                 from Telefonbuch.c:1:
/usr/include/string.h:30:8: Anmerkung: »const char *« erwartet, aber Argument hat Typ »char **«
 char  *_EXFUN(strcpy,(char *__restrict, const char *__restrict));
        ^
Telefonbuch.c:32:29: Warnung: Übergabe des Arguments 2 von »strcpy« von inkompatiblem Zeigertyp
    strcpy(naechste->vorname,v_name);
                             ^
In file included from /usr/include/stdio.h:29:0,
                 from Telefonbuch.c:1:
/usr/include/string.h:30:8: Anmerkung: »const char *« erwartet, aber Argument hat Typ »char **«
 char  *_EXFUN(strcpy,(char *__restrict, const char *__restrict));
        ^
Telefonbuch.c:33:29: Warnung: Übergabe des Arguments 2 von »strcpy« von inkompatiblem Zeigertyp
    strcpy(naechste->wohnort,w_ort);
                             ^
In file included from /usr/include/stdio.h:29:0,
                 from Telefonbuch.c:1:
/usr/include/string.h:30:8: Anmerkung: »const char *« erwartet, aber Argument hat Typ »char **«
 char  *_EXFUN(strcpy,(char *__restrict, const char *__restrict));
        ^


und wenn ich es darin ändere:

code:
1:
2:
3:
	strcpy(naechste->nachname,*n_name);
	        strcpy(naechste->vorname,*v_name);
		strcpy(naechste->wohnort,*w_ort);


kriege ich einen Segmentation fault unglücklich
Thema: C - Telefonbuch Zeiger/Listen
LightSideOfLife

Antworten: 13
Hits: 8.958
18.01.2016 15:44 Forum: Softwaretechnik


Hiermit:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
void Hinzufuegen(Person *derzeitige)
{
	Person *naechste;
	char *n_name[20];
	char *v_name[20];
	char *w_ort[20];
	long int t_nummer;
		if (derzeitige == NULL) return;
		if (derzeitige->next != NULL) return;

			printf("\nGeben Sie den Nachnamen ein\n");		scanf("%s", n_name);	
			printf("\nGeben Sie den Vornamen ein\n"); 		scanf("%s", v_name);
			printf("\nGeben Sie den Wohnort ein\n"); 		scanf("%s", w_ort);	
			printf("\nGeben Sie die Telefonnummer ein\n"); 	scanf("%ld", &t_nummer);
	
		derzeitige->next	= (struct Person*) malloc(sizeof(Person));
		naechste 			= (Person*) derzeitige->next;
			strcpy(naechste->nachname,n_name);
			strcpy(naechste->vorname,v_name);
			strcpy(naechste->wohnort,w_ort);
			naechste->telefonnummer = t_nummer;
			naechste->next 			= NULL;
}


Bekomme ich jetzt folgende Fehlermeldung:

code:
1:
2:
3:
4:
5:
Telefonbuch.c: In Funktion »Hinzufuegen«:
Telefonbuch.c:30:4: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcpy«
    strcpy(naechste->nachname,*n_name);
    ^
Thema: C - Telefonbuch Zeiger/Listen
LightSideOfLife

Antworten: 13
Hits: 8.958
18.01.2016 15:37 Forum: Softwaretechnik


Ok ich versuche es mal großes Grinsen
Habe gerade mist gebaut
Thema: C - Telefonbuch Zeiger/Listen
LightSideOfLife

Antworten: 13
Hits: 8.958
C - Telefonbuch Zeiger/Listen 18.01.2016 14:44 Forum: Softwaretechnik


Hallo Leute,
ich muss euch leider noch einmal nerven!

Unsere letzte Praktikumsaufgabe hat es (meiner Meinung nach) in sich.
Wir sollen ein einfaches Telefonbuch mithilfe von Listen realisieren.

Es soll:
1.: Einträge neu erstellen können (vom Nutzer eingegeben)
2.: Alle Einträge ausgeben können
3.: Nach einem Nachnamen suchen und die dazu passende Telefonnummer ausgeben
4.: Nach einem Nachnamen suchen und diesen Eintrag dann löschen
5.: Das komplette Telefonbuch löschen.

Mit der theoretischen Umsetzung an sich habe ich kein Problem, aber es hapert noch am Verständnis von Listen und etwas bei Zeigern.
Ich habe bereits Teilaufgabe 1 und 2 programmiert bekommen, jedoch weißt dies noch einen Fehler auf:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    char *nachname;
    char *vorname;
    char *wohnort;
    long int telefonnummer;
	struct Person *next;
}Person;

void Hinzufuegen(Person *derzeitige)
{
	Person *naechste;
	char *n_name;
	char *v_name;
	char *w_ort;
	long int t_nummer;
		if (derzeitige == NULL) return;
		if (derzeitige->next != NULL) return;

			printf("\nGeben Sie den Nachnamen ein\n");		scanf("%s", n_name);	
			printf("\nGeben Sie den Vornamen ein\n"); 		scanf("%s", v_name);
			printf("\nGeben Sie den Wohnort ein\n"); 		scanf("%s", w_ort);	
			printf("\nGeben Sie die Telefonnummer ein\n"); 	scanf("%d", &t_nummer);
	
		derzeitige->next	= (struct Person*) malloc(sizeof(Person));
		naechste 			= (Person*) derzeitige->next;
			naechste->nachname 		= n_name;
			naechste->vorname 		= v_name;
			naechste->wohnort 		= w_ort;
			naechste->telefonnummer = t_nummer;
			naechste->next 			= NULL;
}

void Ausgabe(Person *erste)
{
	int i = 1;
	Person *derzeitige = erste;
		while (derzeitige != NULL)
		{
			printf("%d. Person: %s, %s, %s, %ld \n",i, derzeitige->nachname, derzeitige->vorname, derzeitige->wohnort, derzeitige->telefonnummer);
			derzeitige = (Person*) derzeitige->next;
			i++;
		}
}

main()
{
    Person *erste, *derzeitige;
	erste = (Person*) malloc(sizeof(Person));
	
	erste->nachname = "Kinkel";
	erste->vorname = "Marvin";
	erste->wohnort = "Dinslaken";
	erste->telefonnummer = 491635685977;
	erste->next = NULL;
	derzeitige = erste;
	
	Hinzufuegen(derzeitige);
	Hinzufuegen(derzeitige);
	Ausgabe(erste);
}


Schaut man sich die Funktion "Hinzufuegen()" an sieht man, dass ich per scanf Werte an die Zeiger übergeben möchte.
Sobald ich aber den v_namen eingeben möchte (nach dem n_namen) bricht das Programm (mittendrin) ohne Fehlermeldung ab, als wäre nichts passiert.
Nutze ich aber stattdessen die Befehle:

code:
1:
scanf("%s", &v_name);         scanf("%s", &w_ort);


Speichert er n_name korrekt ein und gibt es auch bei der Ausgabe korrekt aus.
Nur v_name und w_ort dann natürlich nicht.
Ist meine Methode um Benutzereingaben an eine Struktur zu übergeben falsch?

Für Hilfe wäre ich sehr dankbar!
Thema: C - Funktionsausgabe in TXT speichern
LightSideOfLife

Antworten: 5
Hits: 5.337
07.01.2016 14:35 Forum: Softwaretechnik


Ich hätte nochmal eine Frage:
Unser Prof gab uns auf die Funktion "AnzahlBerechnen" rekursiv zu lösen.
Meine Funktion ist rekursiv, oder nicht?
Sie ruft sich selbst auf, also gehe ich davon aus, dass dies die korrekte Lösung ist.
Oder müsste ich dies anders lösen?
Thema: C - Funktionsausgabe in TXT speichern
LightSideOfLife

Antworten: 5
Hits: 5.337
06.01.2016 15:28 Forum: Softwaretechnik


Danke, ich werde es mal versuchen!
Thema: C - Funktionsausgabe in TXT speichern
LightSideOfLife

Antworten: 5
Hits: 5.337
C - Funktionsausgabe in TXT speichern 06.01.2016 14:28 Forum: Softwaretechnik


Hallo Leute!
Für mein SoftwareTechnik Praktikum sollte ich einen kleinen Geldautomaten programmieren.
Wir sollten den Automat vor allem in verschiedene Funktionen unterteilen.
Ich habe die Aufgabe bereits gelöst und mein Code sieht nun so aus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
#include <stdio.h>

int schein[7] = {500,200,100,50,20,10,5};
int scheinanzahl[7] = {0,0,0,0,0,0,0};
FILE *Datei;

int BetragEingeben(){
	int eingabe;
		do{
			printf("Wie viel Geld möchten Sie abheben? (5er Schritte) ");
			scanf("%d", &eingabe);
			if (eingabe % 5 != 0)
				printf("\nUngültige Eingabe! \n\n");
		}
		while (eingabe % 5 != 0);
	return eingabe;
}

int* AnzahlBerechnen(int rest, int i){
		if (rest > 0){
			if (rest >= schein[i]){
				scheinanzahl[i] = rest/schein[i];
				rest = rest % schein[i];}
			AnzahlBerechnen(rest, i+1);
		}
			return scheinanzahl;
}


int Ausgabe(int schein[], int scheinanzahl[]){
	int i;
	printf("\nDer Automat drückt folgende Scheine raus: \n\n Anzahl\t |     Schein\n");
	printf("-----------------------\n");
	for (i = 0; i < 7; i++){
		/*if (scheinanzahl[i] != 0){*/
		printf("   %d \t |\t%d\n",scheinanzahl[i], schein[i]);
		/*}*/
		
	}
}

void Speichern(){
	int i;
	Datei = fopen("Log.txt","w");
	for (i = 0; i < 7; i++)
		fprintf(Datei,"%d x %d, ",scheinanzahl[i], schein[i]);
	fclose(Datei);
}

main()
{
	Ausgabe(schein,AnzahlBerechnen(BetragEingeben(), 0));
	Speichern();
}



Ich möchte jetzt aber nicht (wie bereits geschehen) nur sinngemäß die Lösung in Log.txt speichern, sondern die komplette Ausgabe meiner Funktion "Ausgabe()".
Ich habe es bereits mit stdout versucht aber kam auch nicht weiter.
Falls mir wer helfen kann wäre ich sehr dankbar smile

Freundliche Grüße,
Marvin
Thema: Wörter in 2D Array einlesen - C
LightSideOfLife

Antworten: 31
Hits: 18.648
25.11.2015 19:50 Forum: Softwaretechnik


Wie kann ich denn dann nun mit dieser Lösung meine nicht "genutzten" Stellen im Array = '\0' setzen?
Jetzt scan ich ja nicht mehr charweise ein sondern stringweise
Thema: Wörter in 2D Array einlesen - C
LightSideOfLife

Antworten: 31
Hits: 18.648
25.11.2015 18:32 Forum: Softwaretechnik


Die Lösung mit scanf war auch eigentlich meine Erdachte:

code:
1:
2:
3:
4:
5:
case 1 : printf("Woerter eingeben: \n");
				for(i = 0; i < 10; i++)
					for (j = 0; j <10; j++)
						scanf("%c", &wortListe[i][j]);
				break;


Wo liegt hier der Fehler?
Dass ich jetzt buchstabenweise einlese weiß ich, aber auch mit einer Hilfsvariablen habe ich es nicht geschafft.
Thema: Wörter in 2D Array einlesen - C
LightSideOfLife

Antworten: 31
Hits: 18.648
25.11.2015 18:26 Forum: Softwaretechnik


Ok dann werde ich das so lassen und hoffen, dass mein Tutor mich nicht auseinander nimmt großes Grinsen
Alleine hätte ich das vorerst nicht so geschaftt! Ich habe auf jeden Fall was gelernt. Mein Ansatz zum Einlesen war falsch, da ich mich vorher noch nicht mit getchar() vertraut gemacht hatte.

Vielen Dank!
Zeige Beiträge 1 bis 15 von 27 Treffern Seiten (2): [1] 2 nächste »