You are not logged in.

  • Login

1

Sunday, April 24th 2011, 10:26am

[C]File Input/Output

Hi und Frohe Ostern!

Ich hab hier ein Programm das ich nicht verstehe. Ich weis nicht warum die Zeile mit dem "r" genau dort ist und die Zeile mit dem "w" dort ist.
Könntet ihr mir vielleicht das ganze Programm erklären?

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
	FILE *Seiten=NULL;
	FILE *Flaeche=NULL;
	int i=0;
	int x=0;
	int a=0;
	int b=0;
	int ergebnis;
 
 
	Seiten = fopen("Seiten.csv","w");  
	if(Seiten == NULL)  
	{
		printf("unable to write\n");
		exit(-1);
	}
	for(i=0; i <= 10; i++)
	{
		a=rand();
		b=rand();
		fprintf(Seiten,"%d;%d\n", a, b);
	} 
	fclose(Seiten);
 
	Seiten = fopen("Seiten.csv","r");
	if(Seiten == NULL)
	{
		printf("unable to read\n");
		exit(-1);
	}
  Flaeche = fopen("Flaeche.csv","w");  
	if(Flaeche == NULL) 
	{
		printf("unable to write\n");
		exit(-1);
	}
 
	while(!feof(Seiten))
	{
		fscanf(Seiten,"%d;%d\n", &a, &b);
		printf("%d -> %d\n", a, b);
    ergebnis = a * b;
		fprintf(Flaeche,"ergebnis = %d\n\n", ergebnis);
	}
	fclose(Seiten);
	fclose(Flaeche);
	return (0);
}


Hier hab ich ein ganz einfaches:
Es schreibt die Funktion sin(x) in ein Dokument. Aber hier braucht man kein "r". Und auch keine while?
Warum nicht?

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <math.h>
 
int main (void)
{
	FILE * iofile = NULL;
	float i=0;
	iofile = fopen("sinus1.csv","w");
 
	if(iofile == NULL)
	{
		printf("enable to write");
		exit(-1);
	}
 
	for(i=0.1; i<=6; i=i+0.1)
	{
		fprintf(iofile,"sin(%2.1f)= ; %2.4f\n",i,sin(i));
	}
 
	fclose(iofile);
 
	return(0);
}

MfG Mr Gibbs

2

Sunday, April 24th 2011, 10:54am

Schau mal hier, die Beschreibung von fopen.

Naja beim ersten Programm wird eine Datei jeweils zum lesen und zum schreiben geöffnet und beim zweiten nur zum Schreiben. (r=read=lesen, w=write=schreiben)

Die While Schleife wird beim ersten Programm benutzt um alle Daten in der Datei einzulesen und dass geschieht halt solange bis das Dateiende erreicht wurde (-> Funktion eof = endoffile = Ende der Datei).

Mfg Rushh0ur

3

Tuesday, April 26th 2011, 9:21am

Das Problem ist, dass ich nicht weis wenn ich "r" oder "w" verwenden soll.

Das weis ich ja schon r verwendet man zum lesen und w zum schreiben, aber ich versteh nicht wie das gemeint ist?

Wenn ich das 2. Programm jetzt jetzt statt "w" "r" schreibe dann gibt es ja das gleich aus es ändert sich ja nichts?
Ich hab gedacht r und w sind unterschiedleich?

Für was ist fscanf hier gut?? Ich kann ja nirgends Werte einsetzen?

Ich versteh das nicht ganz :(.

Wann und bei was muss ich r und w verwenden?

This post has been edited 3 times, last edit by "Mr Gibbs" (Apr 26th 2011, 10:05am)


4

Tuesday, April 26th 2011, 11:00am

Eigentlich ganz simpel.

w=write=schreiben
Benutzt du wenn du Daten in die Datei schreiben willst.

r=read=lesen
Benutzt du dann wenn du die Datei nur Lesen willst aber sonst nichts.

zu fscanf: http://www2.fh-fulda.de/~klingebiel/c-st…io.htm#i_fscanf

Social bookmarks