From: "Joe Ury" Newsgroups: comp.os.msdos.djgpp Subject: why is output different each time (2nd try) Date: 3 Nov 1998 05:31:17 GMT Organization: University of New South Wales Lines: 84 Message-ID: <01be06eb$47b9e940$5640ab95@JUry.law.unsw.edu.au> NNTP-Posting-Host: law86.law.unsw.edu.au X-Newsreader: Microsoft Internet News 4.70.1155 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Sorry my first message had a error in the code. Why do I get differing output each time. Its reading a marked up text file and the first time it works ok then the next time what looks like memory dump is added at the beginning of each line then the next time more of the same and after a while its ok again - should I be flushing memory somewhere? Is there a bug in memchar - I've looked but it seems that the bug that was their is fixed...any ideas? help and thanks. sample of input file: |A.I.J.A. briefing*Australian Institute of Jewish Affairs. Melbourne. *NMCHS *May 1991+ *NMOR *1994+ *NU:J *no. 1 (Feb. 1991)+ * * * * * * * * * * * * * * |A.I.J.A. papers.* *NMCHS *Aug. 1992+ *NMOR *1996+ * * * * * * * * * * * * * * * * |A.I.J.A. survey*Australian Institute of Jewish Affairs. Melbourne. *NMOR *1996+ *NU:J *no. 1 (Apr.-May 1986)+ *VMAK *1986- * * * * * * * * * * * * * * |A.J.A. quarterly*Anglo-Jewish Association. London. *NGS *v. 1 (1955) -8 (1966) * * * * * * * * * * * * * * * * * * #include #include #include #include #include char Pause() { char c; printf("\nPress Enter to continue..."); while ((c = getchar()) != '\n') { } return c; } int main() { char array [1000]; char *t, *x; FILE *f1, *f2; char delimit[] = "*"; int i = 1; // char c; int len; clrscr(); if((f1= fopen("jewish.prn" , "r" )) == NULL ) { perror( "Cannot open file for reading" ) ; exit( EXIT_FAILURE ) ; } if((f2= fopen("text1.out" , "w" )) == NULL ) { perror( "Cannot open file for writing" ) ; exit( EXIT_FAILURE ) ; } while(fgets( array , sizeof( array ) , f1 ) != NULL ){ // c = fgetc(f1); // fputc(c, stdout); t = strtok(array, delimit); while (t) { len = strlen(t); do { x = (char *)memchr(t, '|', len); if (x) *x = '\n'; } while (x); fputs(x,f2); if (len > 1) fprintf(f2, "%s\n", t); t = strtok(NULL, delimit); } } exit(1); return 0 ; }