我試圖創建一個函數,它在字符數組與字符串中刪除空格和標點符號,例如加密此郵件。我已經在這個網站上閱讀了一些關於人們做同樣事情的其他話題,但是沒有任何答案對我有用。所以我試圖實現一個函數,它接受字符數組並返回一個沒有空格或標點符號的新字符數組。下面是函數我到目前爲止:[解決]試圖使一個函數來從字符陣列
void RemovePunct(char old_String[], char new_String[]){
for (int i = 0; i != 50; i++)
{
if(isspace(old_String[i])==true) continue;
if(ispunct(old_String[i])==true) continue;
if(isalnum(old_String[i])) new_String[i] = old_String[i];
}
return;
}
當我運行通過這個函數返回「ENCRYPTSTHIS▒MESSAGEE」,「ENCRYPTTHIS▒MESSAGE」,「ENCRYPTTHIS▒MESSAGEE」,或一些類似的變化與示例串額外的字母或特殊字符。有時它會成功刪除一個空間,但其他空間總是一個字母或一些奇怪的字符。任何人有任何想法這個功能有什麼問題或如何使它成功地工作?感謝先進的任何幫助。
編輯:大家的幫助我增加了第二個索引和initilized的arryay,以字符串填充它之前,所有的時間和預定功能的工作謝謝。
你有兩個字符串和一個索引字符未初始化值。這可能可以在色情內運行,但不在您的代碼中。 –
是否有阻止std :: regex使用的限制?例如:http://en.cppreference.com/w/cpp/regex/regex_replace,適合您的需求 – Nandu
正則表達式感覺超必殺。簡單的'std :: remove_if'足夠簡單的過濾任務。 [http://en.cppreference.com/w/cpp/algorithm/remove](http://en.cppreference.com/w/cpp/algorithm/remove) –