获取字符串,直到第一个数字

时间:2018-11-28 13:50:13

标签: c arrays string

我需要从数组中获得第一个数字之前的所有字符。 我做到了,它似乎可以正常工作:

#include <stdio.h>

int main() {
    char temp[128] = {0};
    char str_active[128] = {0};

    sprintf(temp, "%s", "AB01");
    printf("Complete string.: %s\n", temp);

    int len = sizeof(temp) / sizeof(char);
    int index = 0;
    while (index < len) {
        if (isdigit(temp[index])) {
            break;
        } else {
            index++;
        }
    }
    snprintf(str_active, index + 1, "%s\n", temp);
    printf("String before first digit.: %s\n", str_active);

    return 0;
}

我想知道我是否可以用更少的指令来做同样的事情,所以以更好的方式进行。

1 个答案:

答案 0 :(得分:3)

函数strcspn可以为您做到:

  

strcspn()函数计算s的初始段的长度,该段完全由不拒绝的字节组成。

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

int main() {

    char temp[128] = {0};
    char str_active[128] = {0};

    sprintf(temp, "%s", "AB01");
    printf("Complete string.: %s\n", temp);

    strncpy(str_active, temp, strcspn(temp, "0123456789"));
    printf("String before first digit.: %s\n", str_active);

    return 0;
}