#include #include int fsize(FILE *sizefile) { int curpos,length; curpos=ftell(sizefile); fseek(sizefile,0L,SEEK_END); length=ftell(sizefile); fseek(sizefile, curpos, SEEK_SET); return length; } void main(int argc, char* argv[]) { char* newfilename; char* filecontenceptr=strdup("\x00"); char* ext; FILE *readfile,*writefile; int filesize; if((argc!=2)&&(argc!=3)) printf("Usage: CaltoTxt source (destination)"); else { if (argc==2) { newfilename=strdup(""); ext=strrchr(argv[1],'.'); strncat(newfilename,argv[1],ext-argv[1]); strcat(newfilename,".txt"); } if (argc==3) { newfilename=strdup(argv[2]); } if(strcmp(argv[1],newfilename)==0) { printf("Destination and source are the same!"); } else { readfile=fopen(argv[1],"rb"); if(!readfile) printf("\"%s\" is not found!",argv[1]); else { if(fsize(readfile)<86) { printf("Invalid file format!"); } else { char header[9]; fread(header,8,1,readfile); header[8]='\0'; if(((strcmp(header,"**TI83F*")!=0)&&(strcmp(header,"**TI83**")!=0))||((strcmp(header,"**TI83F*")==0)&&(fsize(readfile)<76))) { printf("Invalid file format!"); } else { if(strcmp(header,"**TI83F*")==0) { filesize=fsize(readfile)-88; fseek(readfile, 86, SEEK_SET); } else { filesize=fsize(readfile)-86; fseek(readfile, 84, SEEK_SET); } writefile=fopen(newfilename,"wb"); if(!writefile) printf("Error writing to \"%s\"!",newfilename); else { for(int i=1;i<=filesize;i++) { fread(filecontenceptr,1,1,readfile); fwrite(filecontenceptr,1,1,writefile); } fclose(writefile); } fclose(readfile); } } } } } }