Eine Eingabe in C, zwei verschiedene Ausgaben?

1 Antwort

scanf("%lf",&koor[i][1]);         printf("\n%lf",koor[i][1]);

Das kann nicht gehen. Dein Array ist nur 1 groß an der 2ten stelle.

"double koor[3][1]"

mach daraus double koor[4] [2] und versuchs nochmal.

Woher ich das weiß: Studium / Ausbildung

Anscheinend hast du nicht gelernt wie man Arrays in C macht. Du musst immer 1 mehr angeben, als eigentlich im Array enthalten ist. Also array[5] hat 5 Speicherstellen, und zwar 0-4. array[0] bis array[4]. auf array[5] kannst du NICHT ZUGREIFEN. Das bringt fehler. in array[5] ist ein Code eingespeichert der dem PC zeigt, dass das Array zuende ist. Das darfst du nicht überschreiben!

Also allgemein: array[x] beinhaltet die Speicher-Felder array[0] bis array[x-1].

1
@MrAmazing2

Also

koor[3][1] musst du zu koor[4][2] machen, lin[1] musst du zu lin[2] machen und vekt[1][1] zu vekt[2][2]. Damit sollte sich dein Problem beheben.

1
@MrAmazing2

Ah, verstehe. Und ich such schon seit 2 Tagen nach nem Fehler... Dass ich immer eine Stelle mehr eingeben muss, war mir so nicht klar, Danke dir.

0
@dennes0

Kein Problem!

Damit du's dir vlt besser merken kannst:

Du gibst genau die Anzahl x an Speicherzellen an, die du haben willst.

arr[5] gibt dir 5 Speicherzellen. arr[7] gibt 7.

array[x] bringt dir x speicherzellen. von arr[0] bis arr[x-1].

:D Sag dann ob's klappt!

0

Warum brauche ich bei scanf das \n? Wozu ist das gut?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TEXTSIZE 20
 
typedef struct LISTENEINTRAG {
  char szText[TEXTSIZE];
} LISTENEINTRAG;
 
typedef struct {
  LISTENEINTRAG eintrag[3];
  int index;
  int iGroesse;
} LISTE;
 
void push(LISTE* Liste, char szText[TEXTSIZE]) {
  // ->szText
  strcpy(((Liste->eintrag + Liste->index)).szText, szText);
  Liste->index++;
  printf("Neue Groesse %li byte.\n", sizeof(Liste));
}
 
void pop(LISTE* Liste) {
  Liste->index--;
  printf("Eintrag gefunden mit Text: %s", ((Liste->eintrag + Liste-> index)).szText);
  strcpy(((Liste->eintrag + Liste->index)).szText, "");
  printf("Neue Groesse %li byte.\n\n", sizeof(Liste));
}
 
int main() {
  LISTE Liste;
  Liste.iGroesse = sizeof(Liste);
  Liste.index = 0;
 
  char puffer[TEXTSIZE];
  char* c = NULL;
  int iWeiter = 0;
 
  do {
    printf("Neuer Eintrag (1) oder beenden (0)?\n");
    scanf("%i\n", &iWeiter);

    if (iWeiter) {
      printf("Zu speichernden Text eingeben: ");
      fflush(stdin);
      c = fgets(puffer, TEXTSIZE, stdin);

      if (c == NULL) {
        return 1;
      }

      push(&Liste, puffer);
    }
  } while (iWeiter);
   
  do {
    pop(&Liste);
  } while (Liste.index > 0);

  return 0;
}

Warum brauche ich bei

scanf("%i\n", &iWeiter);

das \n? Wozu ist das gut?

...zur Frage

Programm in C beendet sich zu früh.?

Moin zusammen.

Ich übe grade n bischen das Programmieren mit C und ich stecke so n bischen in ner Klamme:

Nach der Auswahl eines Getränks wird die If-Anweisung nicht ausgeführt. Ich vermute zwar, dass der Fehler in der Bedingung der Anweisung selbst liegt, ich erkenn ihn aber nicht.

MfG

Dennis

Das soll übrigens n Getränkeautomat werden... ;)

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

double preis[]={1.99,1.39,2.99,0.79,1.19,3.99,9.99,0.49,0.79,1.99}; 
char *name[]={"Cola-Cola","Fanta","Sprite","Eistee","Monster","Wasser","Tee","Kaffee","O-Saft","Apfelsaft"}; 
int auswahl, anzahl[]={10,10,0,10,10,10,10,10,10,10};

int main() 
{  
   begruessung();  
   //bezahlen();  
   //ausgabe();  

    return 0; }

int begruessung() 
{  
   int dec = 0;  
   printf("\n\nGuten Tag. Sie können zwischen folgenden Getränken wählen:\n");

   for(int i=0;i<10;i++)  
 {  
   printf("\t%s (%.2f€) [%i]\n\n",name[i],preis[i],i+1); 
 }

  while(dec==0)  
 {  
   printf(" Wählen Sie bitte Ihr Getränk:\t");  
   scanf("%d",auswahl);  
   auswahl = auswahl-1;  

  if(anzahl[auswahl]==0)    
  {      
   printf("\nDieses Getränk ist leider nicht mehr verfügbar.");    
  }    
  else    
  {      
   dec++;      
   printf("\n\nIhr Getränk kostet %.2f€",preis[auswahl]);    
  }  
 }

  return auswahl; 
}

...zur Frage

Scanf wird übersprungen (C-Programmierung)?

Ich habe ein C-Programm geschrieben, welches einen string einlesen soll, darin nach einem vom User festgelegten Zeichen suchen soll und es durch ein vom User festgelegten Zeichen ersetzt werden soll. Nun ist mein Problem, dass das 2. und 3. scanf, also die abfragen nach dem Zeichen welches gesucht werden soll und durch was es ersetzt werden soll, übersprungen werden. Hier ist der Code:

#include<stdio.h>

#include<string.h>

char str[256];

char ptr;

int i;

char ersetze;

char durch;

int laenge;

int main()

{

  system("clear");

  printf("\nGeben Sie etwas ein: ");

  scanf(" %[\n]s", &str);

  ptr = str;

  laenge = strlen(str);

  printf("\nBuchstabe zu ersetzen: ");

  scanf(" %c", &ersetze);

  printf("\nErsetze durch: ");

  scanf(" %c", &durch);

  for(i=0; i<=laenge; i++)

  {

     if(ptr == ersetze)

     {

        ptr = durch;

     }

     ptr++;

  }

  printf("\n%s\n", str);

}

...zur Frage

Was möchtest Du wissen?