-
Notifications
You must be signed in to change notification settings - Fork 1
NicoleJAVA/Vector-Space-Model
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Github\Vector-Space-Model\README /************************************************************ README in Github local repository directory ! ************************************************************/ 2013.10.22 >> Week >> day 蟲 [ B U G ] [ Where ] : doctxtname.cpp >> Ver. 24 [ B U G ] cannot pass objects of non-POD type 'struct std::string' through '...' [ Solution ] : Wrong Code : snprintf( titleBuf, TXT_NAME_LEN, "%d%s", 20, txtSuffixTitle ); Correct Code : snprintf( titleBuf, TXT_NAME_LEN, "%d%s", 20, txtSuffixTitle.c_str() ); --- 蟲 [ B U G ]: sort_firstDict.cpp base operand of `->' has non-pointer type `std::string' [ Solution ] Wrong : value->data.c_str() Correct:value.c_str() ( declaration is " std::string value; " ) --- 蟲 [ B U G ]: in compareTerm.cpp : Only 3 character of std::string will be copied into term1 and term2. [ Solution ] : Wrong Code : #define CMP_LEN 100 Correct Code : #define CMP_LEN 1000 ================================================================ 2013. 10. 21 >> Week 7 >> Monday 蟲 [ B U G ]: currentPtr = *sPtr; << SOMETHING WRONG ! [ Solution ] : 很酷唷, 這次改成是在實際引數反而是用 &。 這次形式引數反而是用 * 唷。 實際引數 : insertNode( &dictNode, stemByPorter[ i ] ); /* 這是在 main() 內的實際呼叫 */ 形式引數 : void insertNode( ListNodePtr *sPtr, std::string value ){} 補充說明 : typedef struct ListNode* ListNodePtr --- 蟲 [ B U G ] : [ Where ] : dictCpp.cpp ( about Ver. 11 ) [ B U G ] : dictCpp.cpp : no matching function for call to `strncpy(std::string&, const char*, int)' [ B U G ] : invalid conversion from `const char*' to `char*' WRONG CODE : strncpy( tail->nextPtr->data, h2->data.c_str(), MAX_STR_LEN ); CORRECT CODE : strncpy( const_cast<char*>(tail->nextPtr->data.c_str()), h2->data.c_str(), MAX_STR_LEN ); --- 蟲 [ B U G ] : [ Where ] : sort_firstDict.cpp [ B U G ] : I printf each line. I found that strncmp( newPtr->data, value, MAX_STR_LEN ) will CRASH. [ Solution ] : tutorial : http://stackoverflow.com/questions/1623769/is-there-any-safe-strcmp/1623778#1623778 << take a look, what the US DHS National Cyber Security Division recommends on this matter: Ensure that strings are null terminated before passing into strcmp. This can be enforced by always placing a \0 in the last allocated byte of the buffer. char str1[] ="something"; char str2[] = "another thing"; /* In this case we know strings are null terminated. Pretend we don't. */ str1[sizeof(str1)-1] = '\0'; str2[sizeof(str2)-1] = '\0'; /* Now the following is safe. */ if (strcmp(str1, str2)) { /* do something */ } else { /* do something >> // End tutorial HOWEVER, array[ ] is more like a "C-stlye" thing. and many tutorials sugget that : Don't use array[]; instead, use std::string stringname 蟲[ B U G ]: no matching function for call to `strncmp(std::string&, char*&, int)' [ Solution ] : ( PPS. from now on, I start my std::string life-style ! ) Wrong code : strcmp (word1, word2) Corrct code : x = strcmp(word1.c_str(), word2.c_str()); --- 蟲 [ B U G ]: sort_firstDict_ver_string.cpp FINALLY, it's not because of the usage of strncmp( ) . It's because adding the first listNode is a SPECIAL CASE !!!! So Nicole adds these lines of code : if( previousPtr != NULL ){ /* If currentPtr->data is the first node, this node is empty, and strncmp() will crash becuse this is NULL */ termOrder = strncmp( value.c_str(), currentPtr->data.c_str(), value.size()); } //printf("\nHello insert >> termOrder = strcmp( ) " ); //printf("\nHello insert >> termOder is : %d.", termOrder ); /* loop to find the correct location in the list */ while ( currentPtr != NULL && termOrder > 0 && previousPtr != NULL ) { IMPORTANT ! If currentPtr->data is the first node, this node is empty, and strncmp() will CRASH becuse this is NULL. /*==========================================================================*/ 2013. 10. 20 >> Week 6 >> Sunday when migrating from dev cpp to visual studio c++, put this into >> project properties >> C/C++ >> other include directory : C:\Dev-Cpp\include --- 蟲 [ B U G ] : fatal error C1021: invalid preprocessor command 'include_next', [ Solution ] : In control pannel, msvc's include should be prior to mingw's include. C:/Program Files/Microsoft Visual Studio/VC98/atl/include;C:/Program Files/Microsoft Visual Studio/VC98/mfc/include;C:/Program Files/Microsoft Visual Studio/VC98/include;C:/Modeltech_6.3f/include;C:/Program Files/Microsoft DirectX 9.0 SDK (February 2005)/Samples/C++/DirectShow/Samples/C++/DirectShow/BaseClasses;C:/Modeltech_6.3f/gcc-3.3.1-mingw32/include ( tutorial : http://blog.csdn.net/aboy85/article/details/4208915 ) --- 蟲 [ B U G ] : when I do rmvStop() in a loop in main() many times, at first, the program runs well. but in the 4-th loop, main() can't recive a succussful-return from rmvStop(). [ Solution ] : So I print out some codes in rmvStop(). And then I observed that, ... stopNum is : 319 . tokenSize is : 300 . ... stopNum is : 638 . tokenSize is : 300 . ... stopNum is : 957 . tokenSize is : 300 . Therefore, in txtToArray(), I must reset stopNum to zero. SO COOL !!!!!!! The bug is fixed !!! --- 蟲 [ B U G ] : I need to press "Enter" key on keyboard 1095 times for the for-loop in main( ) to loop 1095 times. Solution : Yeah ! Nicole debugs successfully by herself ! Discard this line in porter.cpp : system("PAUSE"); --- 蟲 [ B U G ] : Too many open files In iteration xxxx i get an "Too many open files" error when opening the xxxx-th file. Solution : Yeah ! Nicole debugs successfully by herself ! Nicole must add this line of code in function txtToArray( ) : fclose(txtFile); Ha~ Don't forget that txtFile is declared 1095 times because everytime when txtToArray( ) is entered, this line will declare again txtFile : void txtToArray( FILE *txtFile, char twoDimArr[][ MAX_STR_LEN ], int & wordCount ) Ha~ Just be careful ! ---
About
IR-HW-PA-2-Vector-Space-Model
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published