1

文字列内で数値だけをインクリメントすることは可能ですか? だから私が持っているとしましょう:

char someString = "A0001";

番号「0001」をインクリメントする方法はありますか? A0002、A0003などにするには?

4

4 に答える 4

2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

char *strinc(const char *str, int d, int min_width){
    char wk[12];//12:max length of sizeof(int)=4
    char *p;
    int len, d_len, c;

    c = len = strlen(str);
    while(isdigit(str[--c]));
    ++c;
    d += strtol(&str[c], NULL, 10);
    if(d<0) d = 0;
    d_len = sprintf(wk, "%0*d", min_width, d);
    p = malloc((c+d_len+1)*sizeof(char));
    strncpy(p, str, c);
    p[c]='\0';
    return strcat(p, wk);
}

int main(void){
    char *someString = "A0001";
    char *label_x2, *label_x3;

    label_x2 = strinc(someString, +1, 4);
    printf("%s\n", label_x2);//A0002
    label_x3 = strinc(label_x2, +1, 4);
    printf("%s\n", label_x3);//A0003
    free(label_x2);
    label_x2 = strinc("A0008", +5, 4);
    printf("%s\n", label_x2);//A0013
    free(label_x3);
    label_x3 = strinc(label_x2, -8, 4);
    printf("%s\n", label_x3);//A0005
    free(label_x2);
    free(label_x3);

    return 0;
}
于 2013-05-27T09:58:08.937 に答える