Ich habe eine .txt-Datei mit einigen Zahlen (zB 1 2 3 usw.), und ich möchte die ersten beiden Zahlen aus dieser Datei lesen, erste Nummer zu val1 zuweisen, zweite Nummer zu val2, aber ich muss dies mit einer separaten Funktion tun. Ich dachte, dass der beste Weg, dies zu tun wäre, ein Array von zwei Ganzzahlen zu deklarieren, und dann diese gescannten Zahlen diesen ganzen Zahlen in Array zuweisen. Hier ist meine Haupt:C-Funktion zum Lesen von 2 Werten aus der Datei
int main()
{
int val1, val2;
int array[2];
char file_name[10];
printf("Filename: ");
scanf("%s",&file_name);
getValues(file_name, array);
val1 = array[0];
val2 = array[1];
}
Die Funktion, die 2 Anzahl von Datei liest und speichert sie auf Anordnung sieht wie folgt aus:
void getValues(char *file_name, int *array)
{
FILE *f;
if((f = fopen(file_name, "r") == NULL))
{
fputs(stderr, "Cannot open this file!");
exit(EXIT_FAILURE);
}
fscanf(f,"%d %d",&array[0],&array[1]);
printf("1st value: %d\n 2nd value: %d",array[0],array[1]);
fclose(f);
}
Programm kompiliert, aber gibt einigen Müll Wert für ganze Zahlen im Array, und schließlich stürzt ab. Was mache ich hier falsch?
nicht die Adresse-of-Operanden '&' auf Arrays Verwenden Sie, ist es nicht wirklich tun, was Sie es erwarten. Es funktioniert * in diesem Fall *, aber nur nicht, was Sie denken, dass es tut. –
Was Ihr Problem anbetrifft, ist die Größe von 'size_t' gleich der Größe von' int' (überprüfen Sie zum Beispiel den 'sizeof' Operator)? Haben Sie die Funktion "getValues" vor dem Aufruf einer Forward-Deklaration gemacht? Können Sie bitte versuchen, ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen und uns zu zeigen, und bitte zeigen Sie uns auch den Inhalt der Datei? Aktivieren Sie in Zukunft weitere Warnungen des Compilers, damit Sie etwas Nützliches erfahren können. –
Vielleicht meintest du das 'if ((f = fopen (file_name," r ")) == NULL)'? –