所以我目前正在嘗試創建一個函式來過濾掉非數字字符,但我只能使用 strlen。例如,“a4n55” -> “455” 我試過了,感覺很接近。printf 僅用于測驗。
void filterNonDigitCharacters(char inData[], char outData[])
{
// create variables
int stringLen, i, j;
// get string length
stringLen = strlen(inData);
printf("Before filter: %s\n", inData);
// loop across string
for(i = 0; i < stringLen; i )
{
// check if char is a number
if(inData[i] >= '0' && inData[i] <= '9')
{
outData[i] = inData[i];
printf("Filtering number: %c at location: %d\n", outData[i] , i);
}
// check if char is a letter
else if(inData[i] >= 'a' && inData[i] <= 'z')
{
j = i;
printf("Letter found : %c at index: %d\n", inData[i], i);
outData[j] = inData[i 1];
printf("Moving number down: %c\n", outData[j]);
}
}
outData[i] = inData[i];
printf("New String: %s\n", outData);
}
uj5u.com熱心網友回復:
如果字符不是數字,則無需執行任何操作。只需為輸出維護一個單獨的索引,并僅在找到數字時遞增它。
請記住以空值終止結果。
void filterNonDigitCharacters(char inData[], char outData[])
{
size_t j = 0;
size_t length = strlen(inData);
for (size_t i = 0; i < length; i )
{
if (inData[i] >= '0' && inData[i] <= '9')
{
outData[j ] = inData[i];
}
}
outData[j] = 0;
}
考慮使用<ctype.h>
諸如isdigit
確定字符類之類的函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488803.html
上一篇:使用正則運算式按列拆分字串
下一篇:如何在一個用戶定義的函式中創建自己的String.Split()和Array.Reverse()內置函式來反轉給定的字串?