bookysmell2004 Δημοσ. 2 Οκτωβρίου 2007 Δημοσ. 2 Οκτωβρίου 2007 >#include <stdio.h> #include <string.h> #include <malloc.h> void ReadLine(char *, FILE *); int main() { int i=0,flag=0; char name[40],name2[40]; char *buff = (char *)malloc(10000); char *s; FILE *ar, *dio; printf ("\n\n Dwse to onoma tou arxeiou: "); scanf ("%s",name); ar=fopen(name,"r"); strcpy(name2,name); strcat(name2,"-new.txt"); dio=fopen(name2,"w"); while (!feof(ar)) { ReadLine(buff,ar); if (strstr(buff,"\\Documents and Settings\\Lomar\\Τα έγγραφά μου\\")) { s = buff + 42; *s = 'D'; *(s+1) = ':'; *(s+2) = '\\'; fprintf (dio,"%s%c",s,'\n'); } else { fprintf (dio,"%s",buff); fprintf(dio,"%c",'\n'); } } free(buff); fclose (ar); fclose (dio); return 0; } void ReadLine(char *Temp, FILE *fp) { char ch; int i=0; while ((ch=fgetc(fp))!=-1 && ch!='\n') { *(Temp+i) = ch; i++; } *(Temp+i)=0; } Είναι λίγο διαφορετικό από το αρχικό σου κώδικα μιας και ήταν λογικά λάθος (δεν έκανε αυτό που έπρεπε να κάνει). Πρόσεχέ το λίγο γιατί έχει γραφτεί κάπως απότομα ...
cocoflop Δημοσ. 3 Οκτωβρίου 2007 Δημοσ. 3 Οκτωβρίου 2007 Θέλω σε ένα αρχείο κειμένου και .txt να αντικαταστήσω συγκεκριμένα σημεία του με κάποια άλλη συμβολοσειρά. Όχι ότι και οι λύσεις που βρέθηκαν έως τώρα είναι άσχημες, αλλά τείνουν σε τεχνικές πιο "αγνού και παραδοσιακού προγραμματισμού" (σαν το σπιτικό ψωμί). Ο πιο απλός και σύγχρονος τρόπος είναι να χρησιμοποιήσεις Regular Expressions. Δυστυχώς δεν γνωρίζω ακριβώς τι παίζει με τους compilers, αλλα πιθανώς στην VC++ να υπάρχουν ήδη τα πακέτα, ενώ στον GCC βρήκα κάποια extra βιβλιοθήκη που κάνει τέτοιες λειτουργίες. Εδώ μπορείς να δεις κάποιες συγκρίσεις ταχύτητας ανάμεσα σε 2 διαφορετικές βιβλιοθήκες για regex (boost και gnu), μπορείς να επιλέξεις όποια θες, και να ακολουθήσεις τις οδηγίες εγκατάστασης και χρήσης σε κάθε περίπτωση http://boost.org/libs/regex/doc/gcc-performance.html Εδώ υπάρχει ένα παράδειγμα που χρησιμοποιεί regex από την βιβλιοθήκη boost. http://www.rosettacode.org/wiki/Regular_expression_matching Ελπίζω να μην σε μπέρδεψα, ένα από τα κουσούρια του G++ (GCC) είναι μερικά από τα θεωρούμενα καλά χαρακτηριστικά να απουσιάζουν. Σε αντίθεση η MS παρέχει πολλά χαρακτηριστικά έτοιμα. αλλά βέβαια στην μία περίπτωση ορίζεις από μόνος σου τι θες να χρησιμοποιήσεις ενώ στην δεύτερη περίπτωση αγοράζεις μια έτοιμη "λύση" με μια τάδε υποστήριξη. Η χρήση επιπλέον βιβλιοθηκών είναι standard θέμα στον προγραμματισμό, εάν όμως έχεις αρκετή πείρα τα κάνεις όλα με κλειστά μάτια.
bookysmell2004 Δημοσ. 3 Οκτωβρίου 2007 Δημοσ. 3 Οκτωβρίου 2007 Κι εγώ είμαι λάτρης του σύγχρονου προγραμματισμού και πολλές φορές φορές οι νέες αυτές έννοεις κυριολεκτικά κάνουν θαύματα! Παρόλ' αυτά όμως νομίζω πως ο φίλος μας ο Lomar δεν είχε τίποτα από αυτά στο μυαλό του μιας και φαίνεται πως τώρα μαθαίνει προγραμματισμό σε C. Εξάλλου δεν είναι αναγκαία χρήση Regex. Μία String.Replace(string a, string ; την κάνει μια χαρά τη δουλειά της Φιλικά πάντα
Lomar Δημοσ. 3 Οκτωβρίου 2007 Μέλος Δημοσ. 3 Οκτωβρίου 2007 χαχαχαχαχαχαχα!!!! όλο αυτό γίνεται με ένα header file και φυσικά την κλήση της ανάλογης συνάρτησης, αλλά ήθελα να πειραματιστώ μόνος και στην τελική να φτιάξω αν τα καταφέρω θα το κάνω header file και θα το ανεβάσω σαν ανοιχτό κώδικα Ευχαριστώ πολύ για τον χρόνο, τον κόπο, την κατανόηση και την υπομονή σας. Θα πειραματιστώ και με τις "ετοιματζίδικες" λύσεις και με το παράδειγμα σου bookysmell2004. @cocoflop θα τα ψάξω λίγο αυτά που μου έδωσες και θα ελπίζω να εμπνευστώ κάτι καλό!
Directx Δημοσ. 3 Οκτωβρίου 2007 Δημοσ. 3 Οκτωβρίου 2007 Σε CodeGear Turbo C++ Explorer, με την βοήθεια της RAD βιβλιοθήκης VCL του πακέτου (στην οποία βασίζεται και η Delphi για όσους ασχολούνται..) θα μπορούσε να γίνει κάπως έτσι: > /* * Find and Replace Text from file example written in CodeGear Turbo C++ * using the VCL library and C++. * * By Directx. */ #include <vcl.h> #include <classes.hpp> #include <strutils.hpp> #include <iostream> #pragma hdrstop //--------------------------------------------------------------------------- using namespace std; #pragma argsused int main(int argc, char* argv[]) { TStringList *strlistBuffer = NULL; int nSuccess = 0; try { try { cout<<"Find&Replace Text from file example Demo by Directx"<<endl<<endl; // Parameters validation (argv[1] = source, argv[2] = find-what, argv[3] = replace) if(!ParamCount()) throw Exception(" Usage: FRT file-name text-to-find replace-with-text"); if(ParamCount()!=3) throw Exception(" Bad parameter count!"); // Load file into VCL TStringList container strlistBuffer = new TStringList(); strlistBuffer->LoadFromFile(ParamStr(1)); // Replace argv[2] with argv[3] -case insensitive!! strlistBuffer->Text = AnsiReplaceText(strlistBuffer->Text, ParamStr(2), ParamStr(3)); // Save new file as .rep strlistBuffer->SaveToFile(ParamStr(1)+".rep"); // Tell about! cout<<" New file version on \""<<((AnsiString)(ParamStr(1)+".rep")).c_str()<<"\""<<endl; } catch(Exception &Error) { // Exception! nSuccess = -1; cout<<Error.Message.c_str()<<std::endl; } } __finally { // Delete local resources delete strlistBuffer; } return nSuccess; } //--------------------------------------------------------------------------- Το αρχείο εισόδου, έστω “TEST.TXT” μπορεί να είναι: > \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ABC.MP3 \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ABC.MP3 \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ABC.MP3 \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ABC.MP3 Με εντολή FRT test.txt "\Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\" "D:\\" ..η έξοδος στο “TEST.TXT.REP”: > D:\\ABC.MP3 D:\\ D:\\ABC.MP3 D:\\ D:\\ABC.MP3 D:\\ D:\\ABC.MP3
cocoflop Δημοσ. 3 Οκτωβρίου 2007 Δημοσ. 3 Οκτωβρίου 2007 Ευχαριστώ πολύ για τον χρόνο, τον κόπο, την κατανόηση και την υπομονή σας. Θα πειραματιστώ και με τις "ετοιματζίδικες" λύσεις και με το παράδειγμα σου bookysmell2004. Δεν είναι και άσχημη η σκέψη σου, διότι αξίζει μια φορά έστω να "ψαχτείς" και να εξερευνήσεις κάτι, σε άλλη περίπτωση μπορείς να χρησιμοποιήσεις κάτι πολύ συγκεκριμένο από μια βιβλιοθήκη ώστε να την φέρεις στα μέτρα σου. Συνήθως οι έτοιμες λύσεις χρησιμεύουν όταν δεν υπάρχει διαθέσιμος χρόνος (είτε λόγω deadline είτε βαρεμάρας) αλλά εάν προστεθούν 10 βιβλιοθήκες μαζί σε μια εργασία τότε τα credits θα πέφτουν βροχή, με προοπτική starwars. @DirectX Ωραίος, αυτά τα μικρά παραδειγματάκια σώζουν, danke!
Lomar Δημοσ. 3 Οκτωβρίου 2007 Μέλος Δημοσ. 3 Οκτωβρίου 2007 ... αλλά εάν προστεθούν 10 βιβλιοθήκες μαζί σε μια εργασία τότε τα credits θα πέφτουν βροχή, με προοπτική starwars. χαχαχαχα τα έσπασε!!! @DirectX man, ευχαριστώ πολύ, αλλά θέλω να το κάνω χωρίς "έτοιμες" συναρτήσεις...
Directx Δημοσ. 4 Οκτωβρίου 2007 Δημοσ. 4 Οκτωβρίου 2007 Οκ, απλά θέλει αρκετή προσπάθεια σε καθαρή C. Για την ιστορία, ακολουθεί ο ανάλογος κώδικας γραμμένος σε C++ STL (με CodeGear Turbo C++): > //-Find&Replace text in file example written in C++ STL by Directx----------- #include <iostream> #include <fstream> #include <sstream> #ifdef __BORLANDC__ #pragma hdrstop #endif //--------------------------------------------------------------------------- using namespace std; #ifdef __BORLANDC__ #pragma argsused #endif int main(int argc, char* argv[]) { ifstream fStream; stringstream strBuilder; try { cout<<"Find&Replace text in file example by Directx in C++ STL"<<endl<<endl; if(argc==1) throw string("Usage: filename text-to-find replace-with-text"); if(argc!=4) throw string("Invalid parameter count!"); // Convert C char to C++ string string strFile = argv[1], strTextToFind = argv[2], strTextReplaceWith = argv[3]; // Open file for read fStream.open(argv[1],ios::in); if(!fStream.is_open()) { strBuilder<<"Cannot open file for read - \""<<argv[1]<<"\""; throw strBuilder.str(); } // Read file data into strBuilder strBuilder<<fStream.rdbuf(); // Close file fStream.close(); // Make strBuilder a simple C++ string string strBuffer=strBuilder.str(); // Find every strTextToFind and replace it with strTextReplaceWith ... int nTextPosition; while((nTextPosition=strBuffer.find(strTextToFind,0))!=string::npos) strBuffer.replace(nTextPosition,strTextToFind.length(),strTextReplaceWith); // Print results on stdout.. cout << strBuffer; } catch(string strError) { cout<<" "<<strError<<endl; } cout<<endl<<"Press Enter to quit.."; cin.get(); return 0; } //--------------------------------------------------------------------------- Είσοδος: > \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ABC.MP3 \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ABC.MP3 \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ABC.MP3 \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ABC.MP3 Εντολή: test.txt ABC DEF Έξοδος: > \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\DEF.MP3 \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\DEF.MP3 \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\DEF.MP3 \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\ \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\DEF.MP3 Οι φανατικοί της C++ STL ας μου συγχωρήσουν τα όποια λάθει καθώς δεν ασχολούμαι ιδιαίτερα με την εν λόγο βιβλιοθήκη ελέω VCL...
Directx Δημοσ. 4 Οκτωβρίου 2007 Δημοσ. 4 Οκτωβρίου 2007 Και μια εκδοχή της ρουτίνας σε ANSI-C, υλοποιημένη σε CodeGear Turbo C++ > /*-Find&Replace String in C example by Directx-------------------------------*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef __BORLANDC__ #pragma hdrstop #endif /*---------------------------------------------------------------------------*/ #ifdef __BORLANDC__ #pragma argsused #endif int main(int argc, char* argv[]) { char *pszBuffer = NULL, *pszPos = NULL, *pszNewBuf = NULL; long lFileLen; int nSuccess= 1, nStrPosCount = 0, *nStrPosList = 0, nStrPosListLen = 0, nCopyIdx = 0, nNewBufCopyIdx = 0; FILE *Stream = NULL; printf("Find&Replace Text from file example Demo in ANSI-C by Directx\n\n"); if(argc!=4) { printf(" Usage: file text-to-find replace-with\n"); return -1; } /* * Attempt to load argv[1] file into pszBuffer! */ if((Stream=fopen(argv[1],"rb"))!=NULL) { if(fseek(Stream,0,SEEK_END)) printf(" Seek to EOF failed - %s\n",argv[1]); else { if((lFileLen=ftell(Stream))==-1L) printf(" Cannot find file length - %s\n",argv[1]); else { if((pszBuffer=(char*)calloc(lFileLen+1,sizeof(char)))==NULL) printf(" Not enough memory to load file - %s\n",argv[1]); else { /* * Read file to buffer */ rewind(Stream); fread(pszBuffer,lFileLen+1,1,Stream); /* * Replace argv[2] with argv[3] in pszBuffer.. * * Locate string for repalce.. */ lFileLen = strlen(pszBuffer); while((pszPos=strstr(pszBuffer,argv[2]))!=NULL) { static int nBegin, nEnd; /* * Find substring Begin position and End position in buffer.. */ nBegin = pszPos-pszBuffer; nEnd = nBegin+strlen(argv[2]); /* * Save string-to-replace pszBuffer offset. */ nStrPosList=(int*)realloc(nStrPosList, sizeof(unsigned long)*++nStrPosListLen); if(nStrPosList==NULL) { nSuccess = 0; printf(" Memory error #1!\n"); break; } nStrPosList[nStrPosListLen-1] = nBegin; /* * Remove obsolute string from pszBuffer. */ memmove(&pszBuffer[nBegin],&pszBuffer[nEnd],strlen(pszBuffer)-nEnd); pszBuffer[lFileLen-=(nEnd-nBegin)] = 0; } /* * Store final pszBuffer length. */ lFileLen = strlen(pszBuffer); /* * Now replace string with new string */ for(nCopyIdx=0;nCopyIdx<lFileLen;nCopyIdx++) { int nReplace = 0; pszNewBuf = realloc(pszNewBuf,sizeof(char)*(nNewBufCopyIdx+2)); if(pszNewBuf==NULL) { nSuccess = 0; printf(" Memory error #2!\n"); break; } for(nStrPosCount=0;nStrPosCount<nStrPosListLen;nStrPosCount++) if(nStrPosList[nStrPosCount]==nCopyIdx) { nReplace = 1; break; } if(!nReplace) { pszNewBuf[nNewBufCopyIdx++] = pszBuffer[nCopyIdx]; pszNewBuf[nNewBufCopyIdx] = '\0'; } else { /* * Special case - string-to-replace is on top of pszBuffer! */ if(!nNewBufCopyIdx) { pszNewBuf = realloc(pszNewBuf,sizeof(char)*(nNewBufCopyIdx+2)); pszNewBuf[nNewBufCopyIdx] = '\0'; } pszNewBuf = realloc(pszNewBuf,sizeof(char)*(nNewBufCopyIdx+strlen(argv[3])+1)); if(pszNewBuf==NULL) { nSuccess = 0; printf(" Memory error #3!\n"); break; } strcat(pszNewBuf,argv[3]); nNewBufCopyIdx+=strlen(argv[3]); nStrPosList[nStrPosCount] = -1; nCopyIdx--; } } /* * Return result in stdout. */ if(nSuccess) printf("%s",pszNewBuf); } } } /* * Close streams. */ fclose(Stream); /* * Free memory */ free(pszBuffer); free(nStrPosList); free(pszNewBuf); } else printf(" File not found - %s\n",argv[1]); printf("\n\nPress Enter to quit.."); getch(); return 0; } /*---------------------------------------------------------------------------*/ ΕΙΣΟΔΟΣ: > \Documents and Settings\Lomar\ABC.MP3 \Documents and Settings\Lomar\ \Documents and Settings\Lomar\ABC.MP3 \Documents and Settings\Lomar\ \Documents and Settings\Lomar\ABC.MP3 \Documents and Settings\Lomar\ \Documents and Settings\Lomar\ABC.MP3 ΕΝΤΟΛΗ: test.txt "\Documents and Settings\Lomar" D: ΕΞΟΔΟΣ: > D:\ABC.MP3 D:\ D:\ABC.MP3 D:\ D:\ABC.MP3 D:\ D:\ABC.MP3 Τι κάνει; Φορτώνει ένα αρχείο στην μνήμη (pszBuffer), εντοπίζει με την βοήθεια της strstr την αρχή του προς αντικατάσταση κειμένου, αποθηκεύει σε μια int array (nStrPosList) την θέση αυτού του κειμένου, και ύστερα το διαγράφει από το pszBuffer. Αυτή η διαδικασία ακολουθείται μέχρι να μην υπάρχει άλλο προς αντικατάσταση κείμενο στο pszBuffer. Ύστερα, αντιγράφει byte προς Byte το pszBuffer σε ένα νέο μπλοκ μνήμης (pszNewBuf), όταν εντοπίζει θέση (εξετάζοντας την int array nStrPosList) που υπήρχε το προς αντικατάσταση κείμενο, τότε απλά αντί του pszBuffer byte προσθέτει το νέο κείμενο που επιθυμούμε εμείς (argv[3]). Σαν υλοποίηση δεν λέει και πολλά πράγματα, διότι χρησιμοποιεί 3 μπλοκ μνήμης, αν κάποιος αφιερώσει λίγο παραπάνω χρόνο, μπορεί να κάνει όλες τις αλλαγές στο ίδιο μπλοκ μνήμης δίχως χρήση βοηθητικών memory blocks και list/arrays. Φυσικά ο κώδικας μπορεί να περιέχει bugs.. Και από τις 3 υλοποιήσεις εξακολουθώ να θεωρώ εκείνη της VCL μακράν ευκολότερη
Lomar Δημοσ. 5 Οκτωβρίου 2007 Μέλος Δημοσ. 5 Οκτωβρίου 2007 Φοβερό! μέσα στο σαββατοκύριακο θα του κάνω την μελέτη και τους πειραματισμούς που του αξίζει!!! Να σου κάνω όμως και μια διευκρινιστική ερώτηση. > #ifdef __BORLANDC__ #pragma hdrstop #endif /*---------------------------------------------------------------------------*/ #ifdef __BORLANDC__ #pragma argsused #endif Οι παραπάνω εντολές στον προεπεξεργαστή της C, τι ακριβώς κάνουν; Το σκηνικό με το #pragma το έχω δει σε πολλά προγράμματα, αλλά δεν κατάλαβα σε τι ακριβώς εξυπηρετεί.
Directx Δημοσ. 5 Οκτωβρίου 2007 Δημοσ. 5 Οκτωβρίου 2007 Η πρώτη εντολή (ή #pragma) “hdrstop” (δηλαδή header stop, σε άλλους μεταφραστές ονομάζεται “hdr_stop” κτλ..) δηλώνει στον compiler, που τελειώνουν τα header που μπορεί να κάνει ή να χρησιμοποιήσει ως pre-compiled ώστε να επιταχύνει το συνολικό compiling μεταξύ των builds. Η δεύτερη εντολή, “argsused” προηγείται των δηλωμένων functions (πχ. main) και έχει σαν σκοπό να αποκρύπτει το warning του compiler πως μια παράμετρος (πχ. η argv) δεν χρησιμοποιείται πότε από τον κώδικα της ρουτίνας μας (στην περίπτωση μας, το πρόγραμμα που ακολουθεί της main). Η C-preprocessor συνθήκη “#ifdef __BORLANDC__ … και #endif” εξασφαλίζει πως τα συγκεκριμένα pragma θα συμπεριληφθούν στο compile μόνο σε περίπτωση που υπάρχει CodeGear/Borland C++ Compiler (το __BORLANDC__ define είναι πάντα defined στους CodeGear/Borland compilers) ώστε να εξασφαλισθεί η συμβατότητα και με άλλους μεταφραστές που δεν γνωρίζουν κάποιο από αυτά τα pragma.
Lomar Δημοσ. 5 Οκτωβρίου 2007 Μέλος Δημοσ. 5 Οκτωβρίου 2007 @Directx Το έκανα compile και όταν τρέχει δεν κάνει την μετατροπή που πρέπει στο αρχείο. Το τρέχω στο ms-dos, με τα εξής arguments: C:\\a.exe fightc.txt "\Documents and Settings\Lomar" "D:\\" a.exe ονόμασα το εκτελέσιμο το οποίο το έχω στο C χύμα. Επίσης το αρχείο fightc.txt είναι στον ίδιο φάκελο. Τρέχει κανονικά το πρόγραμμα και μου εμφανίζει τα περιεχόμενα του αρχείου, αλλά δεν τα αλλάζει...
Directx Δημοσ. 5 Οκτωβρίου 2007 Δημοσ. 5 Οκτωβρίου 2007 Να έχεις υπόψη σου ότι ο κώδικας κάνει αναζήτηση case-sensitive, αν θες στείλε μου το περιεχόμενο του fightc.txt ώστε να το κοιτάξω καλύτερα καθώς μπορεί να υπάρχει κάποιο bug που σε απλά τεστ δεν φαίνεται Υ.Γ. Αν μιλάς κυριολεκτικά για MS-DOS, δηλαδή έκανες το πρόγραμμα compile σε 16bit compiler, τότε φρόντισε αλλάξεις κάθε int σε long καθώς για τους 16bit compiler το int έχει μέγεθος 2byte σε αντίθεση με τους 32bit που το ορίζουν όσο και το long, δηλαδή στα 4byte!
Lomar Δημοσ. 5 Οκτωβρίου 2007 Μέλος Δημοσ. 5 Οκτωβρίου 2007 #EXTM3U #EXTINF:101,The Dust Brothers by Apollwnas - Fight With Lou \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\Fight_Club_OST__Special_Edition\Fight Club OST [special Edition]_partI\26 - Fight With Lou.mp3 #EXTINF:133,The Dust Brothers by Apollwnas - Setting Up A Fight \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\Fight_Club_OST__Special_Edition\Fight Club OST [special Edition]_partI\28 - Setting Up A Fight.mp3 #EXTINF:215,The Dust Brothers by Apollwnas - Chemical Burn (Extended) \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\Fight_Club_OST__Special_Edition\Fight Club OST [special Edition]_partI\22 - Chemical Burn (Extended).mp3 #EXTINF:64,The Dust Brothers by Apollwnas - Stealing Fat \Documents and Settings\Lomar\Τα έγγραφά μου\Η μουσική μου\Fight_Club_OST__Special_Edition\Fight Club OST [special Edition]_partI\20 - Stealing Fat.mp3 Βασικά το έκανα compile με τον Dev-C++ και δεν ήξερα με πως αλλιώς να κάνω εισαγωγή στα arguments... έτσι το έτρεξα απο το dos. Αν θέλεις πές μου πως μέσα τα windows τρέχω προγράμματα με arguments. Άσε φίλε, και έχουν σπάσει τα νεύρα μου με τους compliler! Σε ενα παιδί σε αυτό το thread δεν έβγαζε τόσα error όσα και του δικού μου. Δηλαδή ο κάθε compiler έχει και τις ιδιαιτερότητές του. Τώρα αν το έκανα compile για 16bit δεν νομίζω. Το αποθήκευσα σαν .c πρόγραμμα και δεν άλλαξα κάποια άλλη επιλογή του.
Directx Δημοσ. 5 Οκτωβρίου 2007 Δημοσ. 5 Οκτωβρίου 2007 Φίλε Loram, εκτέλεσα το πρόγραμμα με το αρχείο εισόδου σου στην Windows XP console, δεν παρατήρησα κάποιο πρόβλημα στην αντικατάσταση των στοιχείων. Παράμετροι: fightc.txt "\Documents and Settings\Lomar" D: Ακολουθεί Screen-shot: Για να ανοίξεις γρήγορα την Windows XP console, δώσε cmd στο Start->Run .. Υ.Γ. Μια μικρή λεπτομέρεια, έχω ενεργοποιήσει τα ελληνικά στην Windows XP Console όπως έχω υποδείξει σε παλαιότερο post επί του θέματος, με chcp 1253 και console font την γραμματοσειρά “Lucida Console”
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.