#include #include #include #include int usage() { cout << "a proper call is \n txtcon infile outfile\n"; return EXIT_FAILURE; } int inf_failure(char * filename) { cout << "cannot open " << filename << " for input\n"; return EXIT_FAILURE; } int outf_failure(char * filename) { cout << "cannot open " << filename << " for output\n"; return EXIT_FAILURE; } void txtconv (ifstream inf, ofstream outf) { char Symbols[] = ".XO"; char S[10000]; char *sp, *sp1; outf << "$$B Caption \n"; outf << "$$ ---------------------------------------\n"; while(1) { inf.getline(S, 10000); if(inf.eof()) break; sp = strpbrk(S, Symbols); if (!sp) continue; if (sp - S > 6) continue; sp1 = S + strlen(S) -1; while (!strchr(Symbols, *sp1)) *sp1-- = 0; outf << "$$ |" << sp << "|" << endl; } outf << "$$ ---------------------------------------\n"; } int main(int argc, char** argv) { if (argc !=3) return usage(); ifstream inf(argv[1]); if (!inf) return inf_failure(argv[1]); ofstream outf(argv[2]); if (!outf) return outf_failure(argv[2]); txtconv(inf, outf); return EXIT_SUCCESS; }