Hallo an alle,
ich bin am Beginn meines Programms und soll entweder Daten von einer Datei einlesen oder die Daten per Tastatur einlesen. Die Eingabedatei sieht beispielsweise so aus:
4 5 1 4
1 2 6
1 3 5
2 3 2
2 4 7
3 4 3
Mein Problem ist (unter anderem;)): Ich möchte das Nullsetzen von capacity in eine eigene Funktion schreiben. Aber es funktioniert irgendwie nicht. Ich bekomme folgende Fehlermeldung:
c(80): error #2162: Extraneous return value.
c(88): error #2162: Extraneous return value.
*** Error code: 1 ***
 
Das ist der Code der funktioniert:
C
		
					
				#include <stdio.h>
#include <stdlib.h> //wird für die Funktion malloc benötigt
//int *queque;
//int visited[3];
//int tail, head;
int number_nodes, number_edges, source, sink;
int **capacity;    
//int **flow;
//int *vorgaenger;
//int minimum (int u, int v);
//int maximum (int a, int b);
//void in_queque (int x);
//int out_queque (void);
//int bfs (int s, int t);
int main(void) {
    int i, j, h, k, c, y;
    char eingabe;
    //int max_cap;
    //int max_flow = 0;
    printf("Daten aus Datei (d) oder Daten eingeben (e)\n");
    scanf("%c", &eingabe);//mit %char hats funktioniert geht auch %s
        if (eingabe == 'd') {
            FILE*daten = fopen("datenkomb.txt", "r");  
            if (daten == NULL)
                fprintf(stderr, "Kann Datei nicht oeffnen\n");
            else         
                fscanf(daten, "%d %d %d %d", &number_nodes, &number_edges, &source, &sink);
            capacity = malloc(number_nodes*sizeof(int*));//oder (int*)malloc(number_nodes*sizeof(int))
            if (capacity == NULL) {
                puts("Fehler bei der Speicherzuweisung.");
                return 1;
            }
            for (i=0; i<number_nodes;i++) {
                capacity[i] = malloc((number_nodes)*sizeof(int));
                if (capacity[i] == NULL) {
                    puts("Fehler bei der Speicherzuweisung.");
                    return 1;
                }
            }    
            for (i=0; i<number_nodes; i++) {
                for (j=0; j< number_nodes; j++)
                    capacity[i][j] = 0;
            }
            for (i=0; i< number_edges; i++){                                            //Knoten 1 wird zu Knoten 0 usw.
                fscanf (daten, "%d %d %d", &h, &k, &c) ; 
                capacity[h-1][k-1] = c; 
                printf("%d %d %d \n", h, k, c);
            } 
            fclose(daten);
        }
        for (i=0; i<number_nodes; i++) {
            for (j=0; j< number_nodes; j++){
                printf("%d", i);
                printf("%d",j);
                printf("%d\n",capacity[i][j]);
            }
        }
    //else
}Das ist der Code mit Funktion:
C
		
					
				#include <stdio.h>
#include <stdlib.h> //wird für die Funktion malloc benötigt
//int *queque;
//int visited[3];
//int tail, head;
int number_nodes, number_edges, source, sink;
int **capacity;    
int **u;
//int **flow;
//int *vorgaenger;
//int minimum (int u, int v);
//int maximum (int a, int b);
//void in_queque (int x);
//int out_queque (void);
//int bfs (int s, int t);
void makezero(int**u, int v, int w); 
int main(void) {
    int i, j, h, k, c, y;
    char eingabe;
    //int max_cap;
    //int max_flow = 0;
    printf("Daten aus Datei (d) oder Daten eingeben (e)\n");
    scanf("%c", &eingabe);//mit %char hats funktioniert geht auch %s
        if (eingabe == 'd') {
            FILE*daten = fopen("datenkomb.txt", "r");  
            if (daten == NULL)
                fprintf(stderr, "Kann Datei nicht oeffnen\n");
            else         
                fscanf(daten, "%d %d %d %d", &number_nodes, &number_edges, &source, &sink);
            makezero(capacity, number_nodes, number_edges);
            
            for (i=0; i< number_edges; i++){                                            //Knoten 1 wird zu Knoten 0 usw.
                fscanf (daten, "%d %d %d", &h, &k, &c) ; 
                capacity[h-1][k-1] = c; 
                printf("%d %d %d \n", h, k, c);
            } 
            fclose(daten);
        }
        for (i=0; i<number_nodes; i++) {
            for (j=0; j< number_nodes; j++){
                printf("%d", i);
                printf("%d",j);
                printf("%d\n",capacity[i][j]);
            }
        }
    //else
        //printf("Eingabe der Daten folgenderweise:\n Anzahl der Knoten Anzahl dder Kanten Quelle Senke\n für i-te Kante:Anfangsknoten Endknoten Kapazität\n zwischen den Werten ein Leerzeichen."); //einlesen von eingabe
}
void makezero(int **u, int v, int w) {
            int i,j;
            u = malloc(v*sizeof(int*));//oder (int*)malloc(v*sizeof(int))
            if (u == NULL) {
                puts("Fehler bei der Speicherzuweisung.");
                return 1;
            }
            for (i=0; i<v;i++) {
                u[i] = malloc((v)*sizeof(int));
                if (u[i] == NULL) {
                    puts("Fehler bei der Speicherzuweisung.");
                    return 1;
                }
            }    
            for (i=0; i<v; i++) {
                for (j=0; j< v; j++)
                    u[i][j] = 0;
            }
        }Danke für eure Hilfe******
lg
Sabine
 
		 
		
		
	 und einheitliche Formatierung
 und einheitliche Formatierung