2012-07-20 55 views
0

需要從該字符串中刪除填充字符,例如"REMOVEMEHOW",並且需要通過切分來刪除它,並且不匹配大小寫,並且我試圖切割緩衝區的標題部分。從字符串C中刪除ME挑戰

#include <stdio.h> 
#include <string.h> 
#include <windows.h> 

int main() 
{  
    char buffer[200]="REMOVEMEHOW**THIS IS THE REST OF THE STRING THAT IS FINE***REMOVEMEHOW";  

    system("pause"); 
    return 0; 
} 

回答

1

查看string.h庫中的strstr()。 (我在這裏給出的鏈接是C++,但C具有相同的功能。)

1

如果你知道,有多少(N_frontN_back)字符刪除:

移動的一切N_front後個字符向前N_front並設置終止空字節。

memmove (buffer, buffer + N_front, 200 - N_front); 
buffer[strlen(buffer) - N_back] = '\0'; 
+0

感謝那些跳過空格處罰款開始但似乎只顯示文本的幾個字節我已經包含了上面,我是使用緩衝的它seeems的MFI部分後失敗的打印輸出任何想法的傢伙? – user1539199 2012-07-20 21:56:43

+1

@ user1539199如果你的緩衝區包含除最後一個字符以外的任何''\ 0''字符,那麼'strlen'不會給你你期望的值。在'memmove'調用之前和之後打印'strlen'的值,並確保它們符合你的期望。 – bta 2012-07-20 23:02:06

1
#include <stdio.h> 
#include <string.h> 

char* strrmv(char *text, char *removeword){ 
    char *p=text; 
    int rlen; 
    rlen = strlen(removeword); 
    while(NULL!=(p=strstr(p, removeword))){ 
     memmove(p, p+rlen, strlen(p+rlen)+1); 
    } 
    return text; 
} 

int main(){ 
    char buffer[200]="REMOVEMEHOW**THIS IS THE REST OF THE STRING THAT IS FINE***REMOVEMEHOW"; 

    printf("\"%s\"", strrmv(buffer, "REMOVEMEHOW")); 
    return 0; 
}