doomcalyptica
11-02-2005, 16:16
hallo,
#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:
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:
a[i].alter=0;
im ganzen siehts dann so aus (mit "///....///" markiert)
#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;
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
#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:
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:
a[i].alter=0;
im ganzen siehts dann so aus (mit "///....///" markiert)
#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;
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