Stoppen Sie eine for-Schleife, wenn der Benutzer die Eingabe in c @ beendet ha

Zunächst danke für die Hilfe!

Ich bin neu in der Programmiersprache C (und programmiere im Allgemeinen) und versuche, ein Programm zu schreiben, in das der Benutzer Datenpunkte eingibt. Die Datenpunkte werden dann in einem Array gespeichert, in dem sie bearbeitet werden können.

Wo stecke ich fest: Ich möchte, dass der Benutzer (fast) beliebig viele Punkte eingeben kann und dann mit einem Schlüsselwort das Ende der Dateneingabe signalisiert. In diesem Fall würde der Benutzer "done" eingeben.

Hier ist was ich bisher habe:

#include <stdio.h>
#include <string.h>

int main(void) {

printf("\n Welcome! \n\n Please enter each data point. Enter 'done' when finished.\n\n");

double data[1048];
int i, count;

for (i = 1; ;i++) {

    printf("Data[%i]: ", i);
    scanf("%lf", &data[i]);

    if (data[i] == 'done') {

        break;

    } else {

        count++;

    }

  } 

}

Ich habe versucht 'return 1;' und 'break;'. Jedes Mal funktioniert das Programm einwandfrei, bis das Schlüsselwort eingegeben wird. An diesem Punkt erhalte ich:

Data[8]: Data[9]: ... Data[1120]: Data[1Segmentation fault 11 

Das einzige Mal, wenn es funktioniert, ist, wenn ich es kaputt mache, wenn der Benutzer eine bestimmte Zahl eingibt (z. B. -1 oder 0). Dies funktioniert für den Benutzer jedoch nicht ganz, da er diese Nummern möglicherweise als Datenpunkte eingeben muss.

Sorry für den langen Beitrag, aber ich weiß die Hilfe zu schätzen!

Antworten auf die Frage(12)

Ihre Antwort auf die Frage