¶øÔÚCÓïÑÔµÄÊÀ½çÀC×Ö·û´®£¨CString£©×÷Ϊ´¦ÀíÎı¾Êý¾ÝµÄ»ùʯ£¬ÆäÖØÒªÐÔ²»ÑÔ¶øÓ÷
C×Ö·û´®²»½ö½öÊÇ×Ö·ûÊý×éÄÇô¼òµ¥£¬ËüÃÇÊÇÁ¬½Ó³ÌÐòÓëÓû§¡¢³ÌÐòÓë³ÌÐòÖ®¼äÐÅÏ¢½»Á÷µÄÇÅÁº
±¾ÎĽ«ÉîÈë̽ÌÖÔÚLinux»·¾³ÏÂC×Ö·û´®µÄʹÓ㬽ÒʾÆäÇ¿´óµÄ¹¦ÄÜÓë¶ÀÌØµÄ÷ÈÁ¦£¬²¢Í¨¹ýʵ¼ù°¸Àý£¬Õ¹ÏÖÈçºÎÔÚÈÕ³£±à³ÌÖиßЧÔËÓÃC×Ö·û´®
Ò»¡¢C×Ö·û´®»ù´¡£º¶¨ÒåÓë²Ù×÷ C×Ö·û´®Êµ¼ÊÉÏÊÇÒ»¸öÒÔ¿Õ×Ö·û£¨0£©½áβµÄ×Ö·ûÊý×é
ÕâÖÖÉè¼Æ¼ò½à¶ø¸ßЧ£¬Ê¹µÃCÓïÑÔÔÚ´¦Àí×Ö·û´®Ê±ÎÞÐè´æ´¢³¤¶ÈÐÅÏ¢£¬´Ó¶ø½ÚÊ¡ÁËÄÚ´æ¿Õ¼ä
ÔÚLinuxϵͳÖУ¬C×Ö·û´®¹ã·ºÓ¦ÓÃÓÚÎļþ²Ù×÷¡¢ÍøÂçͨÐÅ¡¢Óû§ÊäÈë´¦ÀíµÈ¶à¸öÁìÓò
1.1 ×Ö·û´®¶¨Òå ÔÚCÓïÑÔÖУ¬¶¨Òå×Ö·û´®µÄ·½Ê½¶àÖÖ¶àÑù£¬×î³£¼ûµÄÊÇÖ±½ÓʹÓÃ×ÖÃæÁ¿¸³Öµ¸ø×Ö·ûÊý×飺 char greeting¡¾¡¿ = Hello, World!; ÕâÀ`greeting`ÊÇÒ»¸ö×Ö·ûÊý×飬°üº¬ÁË×Ö·û´®Hello,World!¼°Æä½áβµÄ¿Õ×Ö·û
1.2 »ù±¾²Ù×÷ C±ê×¼¿âÌṩÁËһϵÁк¯ÊýÓÃÓÚ²Ù×÷C×Ö·û´®£¬°üÀ¨µ«²»ÏÞÓÚ£º - strlen£º¼ÆËã×Ö·û´®³¤¶È£¨²»°üÀ¨½áβµÄ¿Õ×Ö·û£©
strcpy£º¸´ÖÆ×Ö·û´®
strcat£ºÁ¬½ÓÁ½¸ö×Ö·û´®
strcmp£º±È½ÏÁ½¸ö×Ö·û´®
strchr£º²éÕÒ×Ö·û´®ÖÐÊ״γöÏÖµÄÖ¸¶¨×Ö·û
- strstr£º²éÕÒ×Ó×Ö·û´®ÔÚ×Ö·û´®ÖÐÊ״γöÏÖµÄλÖÃ
ÕâЩº¯Êý¹¹³ÉÁËC×Ö·û´®´¦ÀíµÄºËÐÄ£¬Ê¹µÃ¿ª·¢ÕßÄܹ»ÇáËÉʵÏÖ×Ö·û´®µÄ¸´ÖÆ¡¢Á¬½Ó¡¢ËÑË÷ºÍ±È½ÏµÈ²Ù×÷
¶þ¡¢¸ß¼¶¼¼ÇÉ£º¶¯Ì¬ÄÚ´æ¹ÜÀíÓë×Ö·û´®²Ù×÷ ÔÚʵ¼Ê¿ª·¢ÖУ¬¾²Ì¬·ÖÅäÄÚ´æµÄ×Ö·ûÊý×éÍùÍùÎÞ·¨Âú×ãËùÓÐÐèÇó
ÌØ±ðÊÇÔÚ´¦Àí²»È·¶¨³¤¶ÈµÄÊäÈë»òÊä³öʱ£¬¶¯Ì¬ÄÚ´æ·ÖÅäÏÔµÃÓÈÎªÖØÒª
CÓïÑÔÖеÄ`malloc`¡¢`calloc`¡¢`realloc`ºÍ`free`º¯ÊýΪ¶¯Ì¬ÄÚ´æ¹ÜÀíÌṩÁËÇ¿´óÖ§³Ö
2.1 ¶¯Ì¬×Ö·û´®¹¹½¨ µ±ÐèÒª¹¹½¨Ò»¸ö³¤¶Èδ֪µÄ×Ö·û´®Ê±£¬¿ÉÒÔʹÓÃ`malloc`»ò`calloc`¶¯Ì¬·ÖÅäÄڴ棬ȻºóÖð²½Ìî³ä×Ö·û£¬×îºóÊÖ¶¯Ìí¼Ó¿Õ×Ö·û×÷Ϊ½áÊø±êÖ¾
ÀýÈ磺
include
2.2 ×Ö·û´®·Ö¸îÓëºÏ²¢
ÔÚ´¦Àí¸´ÔÓÎı¾Êý¾Ýʱ£¬×Ö·û´®µÄ·Ö¸îÓëºÏ²¢Êdz£¼ûµÄÐèÇó ËäÈ»C±ê×¼¿âûÓÐÖ±½ÓÌṩÕâЩ¹¦Äܵĺ¯Êý£¬µ«¿ÉÒÔͨ¹ý×éºÏʹÓñê×¼¿âº¯ÊýʵÏÖ ÀýÈ磬ÀûÓÃ`strstr`ºÍ`strncpy`¿ÉÒÔʵÏÖ¼òµ¥µÄ×Ö·û´®·Ö¸î£º
char splitString(const char str, char delimiter, charrest) {
chartoken = NULL;
chardelimPos = strstr(str, &delimiter);
if(delimPos !=NULL){
size_t tokenLength = delimPos - str;
token= (char )malloc((tokenLength + 1)sizeof(char));
if(token == NULL) {
perror(Failed to allocate memory fortoken);
return NULL;
}
strncpy(token, str, tokenLength);
token¡¾tokenLength¡¿ = 0;
rest = delimPos + 1; //Ö¸ÏòÊ£Óಿ·Ö
}else {
rest = NULL; // ûÓиü¶à²¿·Ö
token = strdup(str); // Ö±½Ó¸´ÖÆÕû¸ö×Ö·û´®
if(token == NULL) {
perror(Failed to allocate memory fortoken);
return NULL;
}
}
return token;
}
Õâ¸öº¯Êý½ÓÊÜÒ»¸ö×Ö·û´®ºÍ·Ö¸ô·û£¬·µ»Ø·Ö¸ô³öµÄµÚÒ»¸ö×Ó×Ö·û´®£¬²¢Í¨¹ýÖ¸Õë²ÎÊý·µ»ØÊ£Óಿ·Ö
Èý¡¢Êµ¼ù°¸Àý£ºÎļþ´¦ÀíÓëC×Ö·û´®
ÔÚLinux»·¾³Ï£¬Îļþ²Ù×÷ÊdzÌÐòÉè¼ÆÖв»¿É»òȱµÄÒ»»· C×Ö·û´®ÔÚ´¦ÀíÎļþ·¾¶¡¢¶ÁÈ¡ÎļþÄÚÈݵȷ½Ãæ·¢»Ó׏ؼü×÷ÓÃ
3.1 Îļþ¶ÁÈ¡ÓëдÈë
ʹÓÃ`fopen`¡¢`fread`¡¢`fwrite`¡¢`fgets`ºÍ`fputs`µÈº¯Êý£¬¿ÉÒÔ·½±ãµØÔÚÎļþÖжÁдC×Ö·û´® ÒÔÏÂÊÇÒ»¸ö¼òµ¥µÄʾÀý£¬ÑÝʾÈçºÎ¶ÁÈ¡ÎļþÄÚÈݲ¢ÖðÐдòÓ¡£º
include
3.2 Îļþ·¾¶´¦Àí
ÔÚLinuxÖУ¬Îļþ·¾¶Í¨³£ÒÔ×Ö·û´®ÐÎʽ±íʾ ÀûÓÃC×Ö·û´®²Ù×÷º¯Êý£¬¿ÉÒÔÇáËÉÆ´½Ó¡¢½âÎöÎļþ·¾¶ ÀýÈ磬ʹÓÃ`strcat`º¯Êý½«Ä¿Â¼ÃûºÍÎļþÃûÆ´½Ó³ÉÍêÕû·¾¶£º
char constructPath(const char directory, const charfilename) {
size_t dirLength