2016-05-23 6 views
-2

Ich habe Code in C geschrieben, aber es gibt einen Laufzeitfehler zeigt STANDARD INPUT MISSING und darüber hinaus zeigt es Variablen x, y, z kann nicht akzeptieren Ganzzahlwerte, da sie doppelt sein müssen. Hier ist mein Code:Ich habe einen Code geschrieben in c, aber seine Rückkehr Laufzeitfehler zeigt STANDARD INPUT MISSING

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


int main() 
{ 

double r,H; 
int i; 
int a=5; 
int b=10; 
int t=5; 
int I=10; 
int y; 
double x,z; 
FILE *fp; 
fp=fopen("Graph.xlsx" ,"w"); 
for(i=0;i<=1000;i++){ 
    r=(.015*i); 
    if(r>=0 && r<5){ 
     H=(I*r)/(2*3.14*a*a); 
     fprintf(fp,"%f",r); 
     fprintf(fp,"\t"); 
     fprintf(fp,"%f",H); 
     fprintf(fp,"\n"); 
    } 
    else if(r>=5 && r<10){ 
     H=I/(2*3.14*r); 
     fprintf(fp,"%f",r); 
     fprintf(fp,"\t"); 
     fprintf(fp,"%f",H); 
     fprintf(fp,"\n"); 
    } 
    else if(r>=10 && r<15){ 
     x=(r*r- b*b); 
     y=(t*t+2*b*t); 
     z= 1 - x/y; 
     H=z*I/(2*3.14*r); 
     fprintf(fp,"%f",r); 
     fprintf(fp,"\t"); 
     fprintf(fp,"%f",H); 
     fprintf(fp,"\n"); 
    } 
    else 
     H=0; 

} 
fclose(fp); 
return 0; 
} 
+2

Haben Sie den Rückgabewert von 'fopen' überprüft? – csl

+0

wie man es überprüft –

+0

double x, z; ... deshalb müssen x und z doppelt und nicht int sein. – HardCode

Antwort

1

Der grundlegende Fehler ist zu glauben, dass MS Excel eine Textdatei öffnen und nehmen Sie es als richtig formatiert .xlsx Datei. Das von Excel akzeptierte Textformat wird häufig als .csv oder als "kommagetrennte Variable" bezeichnet. So habe ich Ihr tab Zeichen durch ein Komma ersetzt (und vereinfacht jeden Druck). Wenn ich auf Graph.csv doppelklicke, führt es Excel mit den Daten korrekt aus.

#include <stdio.h>       // removed trailing ; 
#include <stdlib.h>       // removed trailing ; 

int main() 
{ 
    double r,H; 
    int i; 
    int a=5; 
    int b=10; 
    int t=5; 
    int I=10; 
    int y; 
    double x,z; 
    FILE *fp; 
    fp=fopen("Graph.csv" ,"wt");   // open a a CSV file in text mode 
    if(fp == NULL) { 
     exit(1);       // added error checking 
    } 
    for(i=0;i<=1000;i++){ 
     r = 0.015 * i; 
     if(r>=0 && r<5){ 
      H=(I*r)/(2*3.14*a*a); 
      fprintf(fp,"%f,%f\n", r, H); // simplified to a single statement ... 
     } 
     else if(r>=5 && r<10){ 
      H=I/(2*3.14*r); 
      fprintf(fp,"%f,%f\n", r, H); // ... with a comma instead of a tab ... 
     } 
     else if(r>=10 && r<15){ 
      x=(r*r- b*b); 
      y=(t*t+2*b*t); 
      z= 1 - x/y; 
      H=z*I/(2*3.14*r); 
      fprintf(fp,"%f,%f\n", r, H); // ... same thing here too 
     } 
     else 
      H=0; 

    } 
    fclose(fp); 
    return 0; 
} 
+0

danke für die Zeit und Hilfe –

+0

wieder, wenn ich versuche, Ihren modifizierten Code in Visual Studio 2015 auszuführen, zeigt es unerwarteten Fehler mit fopen –

+0

@SomitSinha haben Sie bemerkt, dass ich den Dateinamen von '" Graph.xlsx "' zu 'geändert habe "Graph.csv" '? In Ihrem Kommentar ist unklar, ob der C-Code diese Datei nicht erstellt oder ob Excel die erstellte Datei nicht mag. –

Verwandte Themen