Ich habe versucht, eine Funktion in C zu erstellen, die Doubles liest, die dann in einem Array gespeichert werden. Ich möchte in der Lage sein, die Größe des Arrays zurückzugeben, so dass ich es in main verwenden kann. Der Zweck dieser Funktion besteht also darin, den Benutzer aufzufordern, Werte in ein Array einzugeben und^d (ctrl + d) oder EOF einzugeben, um die Schleife zu beenden.C Programmierung: Verwenden der Funktion zum Zurückgeben der Größe des Arrays
#include <stdio.h>
//Prototype Declaration
int getdata(double[], int);
int main(int argc, char* argv[]) {
double array[20];
int count = 0, max = 20;
//Calls the getdata function
count = getdata(array, max);
printf("%s%lf%s","Array1: " ,array[1], "\n");
printf("%s%d%s", "Count is: ", count, "\n");
return 0;
}
----- (Ich bin die Verknüpfung Module, so dass diese in verschiedenen Dateien sind) -------
#include <stdio.h>
//Define getdata.c
int getdata(double values[], int limit){
printf("%s","Please enter your values into the array.\n");
int count = 0;
double n;
while ((count < limit) && (scanf("%lf",&n) != EOF)) {
values[count] = n;
count++;
}
return count;
}
Was passiert, ist jedoch, dass, wenn ich die Pause Schleife früh, gehen die Array-Werte durch feine, aber die Anzahl würde nur 20 ausdrucken. Ich gehe davon aus, dass das Programm automatisch den Rest der leeren Indizes mit etwas füllt und weiterhin den Zählwert inkrementieren, nachdem ich EOF eingeben. Was kann ich tun, damit das Programm die Menge der eingegebenen Werte korrekt ermitteln kann? Ich schreibe nicht viel in C. Ich arbeite hauptsächlich in C++. Ich bin vertraut mit der Weitergabe durch Verweis, aber mit C.
Überprüfen Sie die Dokumentation von 'scanf', um zu sehen, was es zurückgibt –
Beachten Sie, dass die Deklaration von' getdata() 'in einer Kopfzeile sein sollte, die sowohl in der Datei definiert' main() 'und in der Datei' definiert ist getdata() '. Auf diese Weise dient die Header-Datei als Kleister, der überprüft, dass beide Quelldateien sich auf die korrekte Deklaration/Definition von "getdata()" einigen. –
Dieser Code scheint zu funktionieren: 'echo 3 4 5 | main' prints 'Anzahl ist: 3'. –