Zahlen aus Datei einlesen und auf ganzzahligkeit testen

cler

Mitglied
Hallo zusammen,

ich habe eine Datei, in der nur Zahlen stehen. Ich würde nun gerne die Zahlen nacheinander aus der Datei auslesen überprüfen, ob es sich um ganze Zahlen handelt. Allerdings da ist mein Problem. Ich bekomme die Datei geöffnet, aber ich weiß nicht,wie ich dann die Zahlen nacheinander auslesen und auf "Ganzzahligkeit" über prüfen kann.
Folgend mein Code, mit dem ich die Datei öffne.

Code:
void test(void)
{
FILE *eingab;
long int eingel_zahl;
if((eingab = fopen("C:\\tes.txt", "rt")) == NULL)
{ 
	 printf("\n\n\n\n");
	 printf("				Die Eingabedatei konnte nicht geoeffnet ");
	 printf("werden.\n");
	 printf("\n						 Das Progamm wird hier beendet.\n");
	 printf("\n		 Bitte ueberpruefen Sie, ob die Eingabedatei ");
	 printf("in dem richtigen\n");
	 printf("								Pfad existiert.\n\n\n\n");
	 getchar();
	 exit(0);
}
while(!feof(eing))	 /*Solange das Ende der Datei nicht erreicht ist*/
{
 
}
Bin für jeden Tip dankbar.

Grüße
 
moin


In welcher Form stehen die Zahlen in der Datei?

Pro Zeile eine Zahl?

Wenn ja guck dir mal die Funktion getline an.


mfg
umbrasaxum
 
Hallo,

die Zahlen stehen durch ein Leerzeichen getrennt in der Datei, also nicht nur eine Zahl pro Zeile.

Grüße
 
moin


Dann mach es so in der Art:
Code:
Du erstellst eine Variable "zahlen" mit vielen Feldern.


while(!feof(eing)) /*Solange das Ende der Datei nicht erreicht ist*/
{
     1. Lese ein Zeichen aus Datei
     2. if( zeichen == ' ')
         {
              index++;     // Gibt das Feld in deiner Variable zahlen an
              continue;
         }

     3. Zähle zeichen zu der Variable zahlen[index] hinzu
}


mfg
umbrasaxum
 
Hallo,

ich habe es malfolgendermaßen, aber irgendwie komme ich nicht weiter. Das erste Zeichen darf ein '-' sein. Alle weiteren Zeichen dürfen zwischen 0 und 9 liegen. Unten seht ihr meinen Ansatz dazu, aber leider komme ich da irgendwie nicht weiter. Im Code habe ich mal einen Kommentar geschrieben, was ich eine, wie es weiter gehen sollte, leider weiß ich nicht, wie ich das umsetzen soll.
Wäre toll, wenn mir da nochmal jemand auf die Sprünge helfen könnte.

Vielen Dank.

Code:
test[0]= '0'; 
test[1]= '1'; 
test[2]= '2'; 
test[3]= '3'; 
test[4]= '4'; 
test[5]= '5'; 
test[6]= '6'; 
test[7]= '7'; 
test[8]= '8';
test[9]= '9'; 
 
while(!feof(eingab)) 
{
fscanf(eingab, "%s", &eingel); 
if(eingel[0] == '-') 
{ 
	 for(index= 1; index <=10; index++) *1 for* 
	 { 
		 for(index2= 0; index2 <= 10; index2++) *2 for*
		 { 
			if(eingel[index] == test[index2])
			{
				***Wenn der Wert von eingel mit Parameter index mit Wert von test 
				mit Parameter index2 übereinstimmt, soll die 2 for-Schleife verlassen
				werden und in die erste gesprungen werden und das nächste Zeichen
				von eigel mit allen test Werten überprüft werden, wenn das Ende von
			 noch nicht erreicht ist***
		 }
	 } 
	}
	printf("Nicht nur ganze Zahlen.\n");
	printf("Programmende.");
	getchar();
	exit(0);
} 
printf("Es gibt kein\"-\" im String\n");
printf("%s\n\n", eingel);
}
 
Zurück