本文介绍了Ç - 增加一个字符内的数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有可能在字符串中增加单独的一个数字?
所以我们可以说我有:

 字符someString =A0001

有没有办法来增加数字0001?为了使A0002,A0003等?


解决方案

 的#include<&stdio.h中GT;
#包括LT&;&stdlib.h中GT;
#包括LT&;&string.h中GT;
#包括LT&;&文件ctype.h GT;字符* strinc(为const char * str中,诠释D,INT MIN_WIDTH){
    CHAR周[12]; // 12:sizeof运算的最大长度(INT)= 4
    字符* P;
    INT LEN,d_len,C;    C = LEN = strlen的(STR);
    而(ISDIGIT(STR [ - J]));
    ++℃;
    D + =与strtol(安培; STR [C],NULL,10);
    如果(D℃,)D = 0;
    d_len = sprintf的(周,%0 * D,MIN_WIDTH,D);
    P =的malloc((C + d_len + 1)* sizeof的(炭));
    函数strncpy(P,STR,C);
    P [J] ='\\ 0';
    返回strcat的(P,周);
}诠释主要(无效){
    char *之someString =A0001
    字符* label_x2,* label_x3;    label_x2 = strinc(someString,+ 1,4);
    的printf(%S \\ n,l​​abel_x2); // A0002
    label_x3 = strinc(label_x2,+ 1,4);
    的printf(%S \\ n,l​​abel_x3); // A0003
    免费(label_x2);
    label_x2 = strinc(A0008,+ 5,4);
    的printf(%S \\ n,l​​abel_x2); // A0013
    免费(label_x3);
    label_x3 = strinc(label_x2,-8,4);
    的printf(%S \\ n,l​​abel_x3); // A0005
    免费(label_x2);
    免费(label_x3);    返回0;
}

Is it possible to increment a number alone within a string?So let's say I have:

char someString = "A0001";

Is there a way to increment the number '0001'? To make it A0002, A0003 etc?

解决方案
#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;
}

这篇关于Ç - 增加一个字符内的数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 12:08