Wieso kriege ich hier einen Speicherfehler?
-
Ahoy
Ich wollte nur mal fragen wieso ich hier einen Speicherfehler beim ausfuehren des Programmes kriege wenn ich das erste feld im array feullen will...
Das ganze wurde mit VS 6 gemacht und der Sinn und Zweck sind unanstastbar weil eine Lernaufgabe
#include <stdio.h> void eingabe(char feld1[7],int feld2[7],float feld3[7],long int feld4[7]) { /* -----Ab hier Eingabe----- */ for (int zaehler1=0;zaehler1<=6;zaehler1++) { printf("Bitte Eingabe fuer Array 1 Feld %d\n",zaehler1); scanf("%c",feld1[zaehler1]); } printf("\n\n"); for (int zaehler2=0;zaehler2<=6;zaehler2++) { printf("Bitte Eingabe fuer Array 2 Feld %d\n",zaehler2); scanf("%d",feld2[zaehler2]); } printf("\n\n"); for (int zaehler3=0;zaehler3<=6;zaehler3++) { printf("Bitte Eingabe fuer Array 3 Feld %d\n",zaehler3); scanf("%d",feld3[zaehler3]); } printf("\n\n"); for (int zaehler4=0;zaehler4<=6;zaehler4++) { printf("Bitte Eingabe fuer Array 4 Feld %d\n",zaehler4); scanf("%d",feld4[zaehler4]); } printf("\n\n"); } void ausgabe(char feld1[7],int feld2[7],float feld3[7],long int feld4[7],char *point1,int *point2,float *point3,long int *point4) { point1=&feld1[0]; point2=&feld2[0]; point3=&feld3[0]; point4=&feld4[0]; /* -----Ab hier Ausgabe----- */ for (int zaehler5=0;zaehler5<=6;zaehler5++) { printf("Ausgabe %d von Feld1 %c \n",zaehler5,*point1); point1++; } printf("\n\n"); for (int zaehler6=0;zaehler6<=6;zaehler6++) { printf("Ausgabe %d von Feld2 %d \n",zaehler6,*point2); point2++; } printf("\n\n"); for (int zaehler7=0;zaehler7<=6;zaehler7++) { printf("Ausgabe %d von Feld3 %f \n",zaehler7,*point3); point3++; } printf("\n\n"); for (int zaehler8=0;zaehler8<=6;zaehler8++) { printf("Ausgabe %d von Feld4 L%c \n",zaehler8,*point4); point4++; } printf("\n\n"); } main () { char feld1[7]; int feld2[7]; float feld3[7]; long int feld4[7]; char *point1=&feld1[0]; int *point2=&feld2[0]; float *point3=&feld3[0]; long int *point4=&feld4[0]; eingabe(feld1,feld2,feld3,feld4); ausgabe(feld1,feld2,feld3,feld4,point1,point2,point3,point4); return 0; }
Danke
yours
ara
-
Du mußt scanf Pointer übergeben. z.B. hier:
scanf("%c",feld1[zaehler1]);
=>
scanf("%c", &feld1[zaehler1]); // ^ // | // da! ----+
-
Ok das geht jetzt danke
aber wieso "explodiert" mir das programm dann bei der Ausgabe?
-
weil scanf dann das, was zufälligerweise in der Variable gespeichert ist, als Adresse interpretiert, und da deine Eingabe hinspeichert.
-
achso und (sorry wenn ich jetzt irgendwie penetrant wirke aber das programm muss bis morgen laufen :-/) wie kann ich das abstellen das anstelle der adresse der inhalt verwendet wird?
-
Umgekehrt.
Wie Bashar gesagt hat, mit &.
int i = 0; // 0 ist Inhalt von i int* p = &i; // p ist Adresse von i