2017-11-18 1 views
0

Ich versuche, die von mir ausgedruckten Informationen in einer TXT-Datei aus einem separaten Programm zu lesen und in diesem neuen Programm anzuzeigen. Obwohl, wenn ich das Programm starte, sagt es, dass die Datei nicht gefunden werden kann. Ich vermute, es ist mein Code, und nicht der Speicherort der Datei, da ich meinen harten Code doppelt überprüft habe, hier ist, was ich bisher habe, wenn mir jemand in die richtige Richtung zeigen könnte, das wäre toll!.txt-Datei und Druckergebnisse lesen

#include <stdio.h> 
#include <stdlib.h> 
#define ARRAY_SIZE  21 

typedef struct data_slice 
{ 
    int t;  // -> Time 
    float tp; // -> Valve pressure 
    float tf; // -> Sodium flow 
    float tt; // -> Sodium temp in Celsius 
} data_slice; 

void printIt(data_slice * data); 

int main() 
{ 
    float num; 
    FILE *fptr; 
    data_slice data[ARRAY_SIZE]; 

    if ((fptr =  fopen("/Users/captainrogers/Documents/output_data.txt","r")) == NULL){ 
     printf("Error! opening file"); 

     // Program exits if the file pointer returns NULL. 
     exit(1); 
    } 

    fscanf(fptr,"%f \n", &num); 

    printIt(data); 

    fclose(fptr); 

    return 0; 
} 
void printIt(data_slice * data) 
{ 
    // Find the indice holding the time value of -10 
    int indice = 0; 
    for (int i = 0; i < ARRAY_SIZE; ++i) 
    { 
     if (data[i].t == -10) 
     { 
      indice = i; 
      break; 
     } 
    } 

    // Print results to screen 
    for (int i = 0, temp = indice; i < ARRAY_SIZE; ++i) 
    { 
     printf("%i\t %f\t %f\t %f\n", data[temp].t, data[temp].tp,  data[temp].tf, data[temp].tt); 
     temp = (temp + 1) % ARRAY_SIZE; 
    } 

} 

Daten Ich versuche, von .txt zu drucken:

-10 595.000000 15.000000 167.000000 
-9 557.000000 17.000000 168.000000 
-8 634.000000 17.000000 114.000000 
-7 656.000000 10.000000 183.000000 
-6 561.000000 13.000000 139.000000 
-5 634.000000 17.000000 124.000000 
-4 672.000000 19.000000 155.000000 
-3 527.000000 14.000000 166.000000 
-2 656.000000 11.000000 188.000000 
-1 661.000000 18.000000 141.000000 
    0 689.000000 17.000000 146.000000 
    1 624.000000 11.000000 104.000000 
    2 504.000000 20.000000 120.000000 
    3 673.000000 18.000000 147.000000 
    4 511.000000 12.000000 114.000000 
    5 606.000000 14.000000 171.000000 
    6 601.000000 13.000000 159.000000 
    7 602.000000 11.000000 127.000000 
    8 684.000000 10.000000 194.000000 
    9 632.000000 16.000000 139.000000 
10 651.000000 13.000000 168.000000 
+1

Es sieht so aus, als ob Sie auf einem MacOS-System sind. Denken Sie daran, dass bei POSIX-Systemen (wie Mac OS und Linux) bei Datei- und Verzeichnisnamen die Groß-/Kleinschreibung beachtet wird. Ich empfehle Ihnen auch, den Wert von "errno" direkt nach "fopen" auszudrucken, um einen Null-Zeiger, vielleicht in druckbarer Form, unter Verwendung von z. 'perror'. –

+0

Nun, ich habe gerade eine zufällige Datei erstellt und Ihren Code ausprobiert und es funktionierte ohne irgendwelche Änderungen (außer dem Dateipfad). –

+1

@Someprogrammerdude: Der Standard-Dateisystemtyp (HFS +) unter OS X (Mac) unterscheidet standardmäßig die Groß-/Kleinschreibung. Sie * können * Groß-und Kleinschreibung sensible Dateisysteme auf Mac (Case-Sensitive HFS +) erstellen, aber die meisten nicht. – cdarke

Antwort

0
fopen("/Users/captainrogers/Documents/output_data.txt","r") 

Wenn die Datei nicht gefunden werden kann, überprüfen Sie Ihren Weg. Vielleicht zuerst mit dem vollständigen Pfad inklusive Laufwerksbuchstaben versuchen.

fscanf(fptr,"%f \n", &num); 

Überprüfen Sie immer den Rückgabewert von fscanf(). "%f \n" ist wahrscheinlich nicht die Formatzeichenfolge, die Sie möchten.

printIt(data); 

Hauptproblem: Sie nie irgendwelche Daten in data[] lesen.

0

fptr = fopen ("C: //Users//captainrogers/Documents/output_data.txt", "r")) versuchen Sie diesen Code, wenn Sie sicher sind, dass Ihr Dokument in der richtigen Datei ist.