Yeniyim, ancak yukarıdaki cevaplardan bazıları delice karmaşık, bu yüzden işte bir alternatif.
NOT: 0-9 bitişik olduğu sürece (standarda göre olmaları gerekir), bu, sayılar ve '' dışındaki tüm diğer karakterleri filtrelemelidir. 0-9'u bilmek bitişik olmalıdır ve bir karakter gerçekten bir int'dir, aşağıdakileri yapabiliriz.
DÜZENLEME: Posterin de boşluk istediğini fark etmedim, bu yüzden değiştirdim ...
#include <cstdio>
#include <cstring>
void numfilter(char * buff, const char * string)
{
do
{
if ( (*string >= '0' && *string <= '9') || *string == ' ')
*buff++ = *string;
} while ( *++string );
*buff++ = '\0';
}
int main()
{
const char *string = "(555) 555-5555";
char buff[ strlen(string) + 1 ];
numfilter(buff, string);
printf("%s\n", buff);
return 0;
}
Aşağıda sağlanan karakterleri filtrelemek için var.
#include <cstdio>
#include <cstring>
void cfilter(char * buff, const char * string, const char * toks)
{
const char * tmp;
do
{
tmp = toks;
*buff++ = *string;
do
{
if (*string == *tmp)
{
buff--;
break;
}
}while (*++tmp);
}while (*++string);
*buff++ = '\0';
}
int main()
{
char * string = "(555) 555-5555";
char * toks = "()-";
char buff[ strlen(string) + 1 ];
cfilter(buff, string, toks);
printf("%s\n", buff);
return 0;
}