是否有任何函数可以提取字符串中的数字返回数字字符串?
示例我有字符串:assdf4fdsdf65fsafda5
想输出的是数字字符串:4 65 5
并且输入字符串未知长度为。
我知道可以提取的方式是:
char *str = "ab234cid*(s349*(20kd", *p = str;
while (*p) { // While there are more characters to process
if (isdigit(*p)) { // Upon finding a digit,
long val = strtol(p, &p, 10); // Read a number,
printf("%ld\n", val); // and print it.
} else { // Otherwise, move on to the next character.
p++;
}
}
是否有像char extract(char input,char output){ ... return output;}
这样的功能谢谢
答案 0 :(得分:1)
我不知道有任何可用的功能,但实施起来相当容易。以下代码假定output
至少分配了strlen(input) + 2
个字节。我将留给您删除它可能添加到output
的尾随空格。
#include <stdio.h>
#include <ctype.h>
void extract(const char *input, char *output) {
while (*input) {
while (*input && !isdigit(*input)) ++input;
while (isdigit(*input)) *output++ = *input++;
*output++ = ' ';
}
*output = '\0';
}
int main(void) {
char out[21];
const char *in = "assdf4fdsdf65fsafda5";
extract(in, out);
printf("%s\n", out);
return 0;
}
输出:4 65 5
答案 1 :(得分:-1)
答案 2 :(得分:-1)
这样的事情(没有详尽测试):
#include <stdio.h>
#include <string.h>
char non_num[] = " !\"#$%&'()*+,-./;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\^_`abcdefghijklmnopqrstuvwxyz{|}~";
int
main(int argc, char **argv)
{
char str[] = "assdf4fdsdf65fsafda5";
char *next = str;
char *strptr = str;
while( (next = strtok(strptr, non_num)) != NULL )
{
printf("%s ", next);
strptr = NULL;
}
printf("\n");
return(0);
}