hallo,
Code:
#include <stdio.h>
#include <conio.h>
#include <io.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys\stat.h>
#include <string.h>

#define MAX 20


struct struktur {
       char name[100];
       char street[100];
       int alter;
};

int main() {
	struct struktur a[100];
	struct struktur b[100];
	int i;
	int datei;

	if((datei=creat("datei.txt",S_IWRITE))==-1) {
		printf("fehler\n");
		return -1;
	}

	for(i=0; i<MAX; i++) {
          ///////////////////////////////...................////////////////
		a[i].alter=i;
        ////////////////////////////////.........................////////////
		strcpy(a[i].name,"leer");
		strcpy(a[i].street,"leer");
		if((write(datei,&a[i].alter,sizeof(a[i].alter)))==-1)
			return -1;
		if((write(datei,&a[i].name,sizeof(a[i].name)))==-1)
			return -1;
		if((write(datei,&a[i].street,sizeof(a[i].street)))==-1)
			return -1;
	}

	close(datei);
	if((datei=open("datei.txt",O_RDONLY))==-1) {
		printf("fehler\n");
		return -1;
	}

	for(i=0; i<MAX; i++) {
		if((read(datei,&b[i].alter,sizeof(b[i].alter)))==-1)
			return -1;
		if((read(datei,&b[i].name,sizeof(b[i].name)))==-1)
			return -1;
		if((read(datei,&b[i].street,sizeof(b[i].street)))==-1)
			return -1;
	}

	for(i=0; i<MAX; i++) {
		printf("%d\t%s\t%s\n",b[i].alter,b[i].name,b[i].street);
	}

	close(datei);
	return 0;
}
die ausgabe von diesem programm sieht so aus:
Code:
0       leer    leer
1       leer    leer
2       leer    leer
3       leer    leer
4       leer    leer
5       leer    leer
6       leer    leer
7       leer    leer
8       leer    leer
9       leer    leer
10               leer
3071             leer
3327             leer
3583             leer
3839             leer
4095             leer
4351             leer
4607             leer
4863             leer
5119             leer

"C:\lcc\lcc\test.exe"
Return code 0
Execution time 0.011 seconds
Press any key to continue...
veränder ich die zeile 30 so um:
Code:
a[i].alter=0;
im ganzen siehts dann so aus (mit "///....///" markiert)
Code:
#include <stdio.h>
#include <conio.h>
#include <io.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys\stat.h>
#include <string.h>

#define MAX 20


struct struktur {
       char name[100];
       char street[100];
       int alter;
};

int main() {
	struct struktur a[100];
	struct struktur b[100];
	int i;
	int datei;

	if((datei=creat("datei.txt",S_IWRITE))==-1) {
		printf("fehler\n");
		return -1;
	}

	for(i=0; i<MAX; i++) {
		///////////////////////////////..................//////////////////////
		a[i].alter=0;
		/////////////////////////....................//////////////////////////
		strcpy(a[i].name,"leer");
		strcpy(a[i].street,"leer");
		if((write(datei,&a[i].alter,sizeof(a[i].alter)))==-1)
			return -1;
		if((write(datei,&a[i].name,sizeof(a[i].name)))==-1)
			return -1;
		if((write(datei,&a[i].street,sizeof(a[i].street)))==-1)
			return -1;
	}

	close(datei);
	if((datei=open("datei.txt",O_RDONLY))==-1) {
		printf("fehler\n");
		return -1;
	}

	for(i=0; i<MAX; i++) {
		if((read(datei,&b[i].alter,sizeof(b[i].alter)))==-1)
			return -1;
		if((read(datei,&b[i].name,sizeof(b[i].name)))==-1)
			return -1;
		if((read(datei,&b[i].street,sizeof(b[i].street)))==-1)
			return -1;
	}

	for(i=0; i<MAX; i++) {
		printf("%d\t%s\t%s\n",b[i].alter,b[i].name,b[i].street);
	}

	close(datei);
	return 0;
}
man erhält diese ausgabe;
Code:
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer
0       leer    leer

"C:\lcc\lcc\test.exe"
Return code 0
Execution time 0.011 seconds
Press any key to continue...
so und diese ausgabe ist mir schleierhaft, wieso fürht die 0 zu keinen problem, aber die 20 ? -> (i kann nicht größer als 20 sein ! )
was mach ich da falsch, vorallem verstehe ich nicht wieso da auf einmal solche otopischenwerte die 3071, 3327 usw rauskomen können ... was mach ich da falsch ?
ist das ewine art sonderfall ... bug ??
please help